Redian新闻
>
从apply句型的潜在危险看R语言的俚语风格
avatar
A*5
2
如果你申请了一个工作,对方也很感兴趣。但是你现在却不想去这家了(有更好的另外
一家)。但是,将来也许还会去这家,因此也不想得罪这家。你怎么找理由回绝人家呢
?谢谢!
现在的世界那么小,说不准哪天又想去这家了呢。所以不想断了后路。
avatar
e*a
3
我一月份才会CLOSE,但是想趁现在DEAL多的时候买些工具储着先
请版上的麻烦推荐一下常用的工具吧。
我知道需要lawn mower,其它的呢
还有应该到哪里买比较好,因为看到一个帖子说HD没有DEAL
另外厨房。洗衣房的appliance我都需要。大家觉得现在买了合算吗?也不知道我的APT
能不能装下这么多,呵呵
谢谢了
avatar
b*e
4
youtube上面都没了?
avatar
m*n
5
apply句型是R最失败的句型,它的失败集中体现了R语言的底层结构的粗笨和任性
刚开始学R的同学可能都会被apply的所谓高效所惊叹
然而apply在R的本质就是元素枚举,它只是比列标枚举省了一步
sapply(1:10, print)
基本等同于以下的元素枚举
for( each in 1:10) print(each)
apply在应用时有两大缺陷,都与多变量函数有关
例如我要算一组数据,给定长宽,求长方形面积
或者对以长=20,宽=10的附近以0.1为精度的9*9偏扰动分析
但是apply家族的函数并没有提供同时变动多个自变量的计算,对不起,还是老实用for吧
那么我只变动一组数据,其余不变,可以算么?
这个用上匿名函数,还过得去
如果你有f(x1,x2,x3),只想变动x2,x1=a,x3=c

sapply( , function(x) f(a,x,c) )
如果说缺陷仅仅可以用R语言在编制时的功能简约来作借口,那么危险就是R语言的无可
推卸的责任了。
例如时间计算的常用包lubridate
require(lubridate)
dminutes(1:10)
会得到1到10分钟的时间长度
如果用这个作自变量做时间运算
在apply和元素枚举中都会出现意外
for( each in dminutes(1:10) ) print(each)
哈哈
得到的是 60 120 等等自然数
for( each in dminutes(1:10) ) print(class(each))
证实了在元素枚举中,R自行强迫把lubridate包定义的Duration类给转成数值类了
也就是说,仅仅做了个枚举,R就已经不经过你同意,把原来的类给降级成基础类了
apply不可避免的也会发生相同的错误
sapply(dminutes(1:10),function(x)x+Sys.time())
只有最土的下标枚举能避免
for( i in 1:10) print(dminutes(1:10)[i])
这在编程中是个危险,容易引发意想不到的错误
结论是apply基本不敢用
这就是R的俚语特性——
给了你一个榨汁器,可以榨柠檬,你以为拿来苹果、梨、香蕉都可以榨
但是对不起,那些都榨不了,会出错
甚至榨橙子都会出错
这就像英语,学了一个dogs,就以为mans可以用了,其实不行
英语是一种经验性的俚语,所谓的案例法,一个管用不代表类似的都管用
R真是深得英语的精髓
而python的只需list comprehension一个语法就把上述所有问题全部搞定
Python思维方式是大陆法,类似于汉语,学了一点,可以推及到任何相似的
羊肉,猪肉,鱼肉,虾肉,牛肉......
难怪Python在大数据领域被推为至尊,真是实至名归。
avatar
F*t
6
你咋还重复发帖呀
我咋还有空回得啦
avatar
j*o
7
没签字都好办,就说有better offer
avatar
m*p
8
哈,我跟你差不多时间Close。
趁低价买了电视机;定了洗衣机烘干机。
HD和Lowes都可以给你Hold很长时间的,可以直接deliver到你的新房子--这一点HD比较
好,只要3个月内都可以;lowes短。
avatar
h*c
9
日期函数都没整明白,歇歇吧
avatar
d*e
10
###此帖已应当事人要求删除###

【在 F*******t 的大作中提到】
: 你咋还重复发帖呀
: 我咋还有空回得啦

avatar
z*n
11
Lowes也可以hold这么长吧

【在 m****p 的大作中提到】
: 哈,我跟你差不多时间Close。
: 趁低价买了电视机;定了洗衣机烘干机。
: HD和Lowes都可以给你Hold很长时间的,可以直接deliver到你的新房子--这一点HD比较
: 好,只要3个月内都可以;lowes短。

avatar
m*n
12
你的论点有了,论据呢?

【在 h**********c 的大作中提到】
: 日期函数都没整明白,歇歇吧
avatar
s*i
13
哈哈哈

【在 F*******t 的大作中提到】
: 你咋还重复发帖呀
: 我咋还有空回得啦

avatar
v*d
14
ladder
saw
fertilizer
...
avatar
m*n
15
你的论点有了,论据呢?

【在 h**********c 的大作中提到】
: 日期函数都没整明白,歇歇吧
avatar
y*o
16
lol

【在 F*******t 的大作中提到】
: 你咋还重复发帖呀
: 我咋还有空回得啦

avatar
n*r
17
微波炉割草机有deal吗?
谢谢

【在 v********d 的大作中提到】
: ladder
: saw
: fertilizer
: ...

avatar
d*c
18
我记得这个你以前抱怨过了,而且别人给你解释的挺清楚了。
需要又重新骂一遍吗?
一找就找出来那个旧贴了
https://www.mitbbs.com/article_t1/Programming/31508467_0_3.html
因为我印象很深,你的几乎所有帖子都是骂R的。

for吧

【在 m*****n 的大作中提到】
: apply句型是R最失败的句型,它的失败集中体现了R语言的底层结构的粗笨和任性
: 刚开始学R的同学可能都会被apply的所谓高效所惊叹
: 然而apply在R的本质就是元素枚举,它只是比列标枚举省了一步
: sapply(1:10, print)
: 基本等同于以下的元素枚举
: for( each in 1:10) print(each)
: apply在应用时有两大缺陷,都与多变量函数有关
: 例如我要算一组数据,给定长宽,求长方形面积
: 或者对以长=20,宽=10的附近以0.1为精度的9*9偏扰动分析
: 但是apply家族的函数并没有提供同时变动多个自变量的计算,对不起,还是老实用for吧

avatar
l*3
19
ORZ....

【在 F*******t 的大作中提到】
: 你咋还重复发帖呀
: 我咋还有空回得啦

avatar
m*r
20
我的大部分帖子也是骂R的。 不过我很快意识到,R这个语言和其它语言不一样。 比如
这个apply和函数编程有很大关系。你得多琢么琢么这个语言为什么长这个样子。
不过我早已看穿了R是火星语,你管他叫俚语, 的本质,文档也是吊郎当,所以早就放
弃了当初精通R的想法。
avatar
m*n
21
"我几乎从来不用apply,lapply倒是常用,那是为了避免自己手工初始化list。"
——好吧,你比我宽容,你只要R比C省事就满意了。

【在 d******c 的大作中提到】
: 我记得这个你以前抱怨过了,而且别人给你解释的挺清楚了。
: 需要又重新骂一遍吗?
: 一找就找出来那个旧贴了
: https://www.mitbbs.com/article_t1/Programming/31508467_0_3.html
: 因为我印象很深,你的几乎所有帖子都是骂R的。
:
: for吧

avatar
m*n
22
我花了两个星期处理行情数据,就为了算个回测。
新工作都可能要泡汤了,对方无法理解我为什么效率这么低。
体会一下两个星期想用一个语言做件事情,只是弄明白它在哪里有坑,是什么心情。
时间计算功能缺失我就忍了,apply和loop在执行时擅自把数据类型篡改了,这不能忍。
================================================================
发信人: didadida (滴滴嗒嗒), 信区: Programming
标 题: Re: 必须喷一下python
发信站: BBS 未名空间站 (Fri Aug 4 15:03:06 2017, 美东)

从你的这个简单问题看,你脑子真的很不怎么样,你中文系的吧?半路出家写程序。
就你还有脸张口就说别人笨
你代表了一类不适合编程的人,这类人执拗于一些黑箱子,反正简单:给个输入,黑箱
子给个输出。但是黑箱子总归有应用的局限。当别人给的黑箱子无法很直接地解决某个
问题时,你这种人不是去自己写个高效率的黑箱子(从你描述的问题看,写一个很
容易吧
,当然对笨人来说未必),或者绕个道做个变换来用已有的黑箱子,而是骂黑箱子。

【在 m*****n 的大作中提到】
: "我几乎从来不用apply,lapply倒是常用,那是为了避免自己手工初始化list。"
: ——好吧,你比我宽容,你只要R比C省事就满意了。

avatar
m*n
23
我当然也会绕道
例如时间强制转数值表示多少秒那个
我就做个判断,如果类型已经被R偷偷改成数值了,我就再把它强制转回时间
只是在应用R的时候,时间都花在弥补R的缺陷上了,这对于一个应用者是极大的时间浪费
我又不是C语言工程师,有的是时间来重新搭建应用层,用高级语言不就是为了搭建方
便么?如果都要自己手工一个个造轮子,用它作甚?
avatar
m*r
24
如果是时间紧的项目,我都用sas. 几天就能干完。
只有时间很充裕的项目,我才用R. 经常一卡卡一个星期,常有的事,琢磨各种R文档,
还到这个版来问一问。 当然你要事先找好各种理由,需要新的测试啊,业务太复杂,
数据太复杂啊。 肯定不能说在实验新方法 呵呵。

忍。

【在 m*****n 的大作中提到】
: 我花了两个星期处理行情数据,就为了算个回测。
: 新工作都可能要泡汤了,对方无法理解我为什么效率这么低。
: 体会一下两个星期想用一个语言做件事情,只是弄明白它在哪里有坑,是什么心情。
: 时间计算功能缺失我就忍了,apply和loop在执行时擅自把数据类型篡改了,这不能忍。
: ================================================================
: 发信人: didadida (滴滴嗒嗒), 信区: Programming
: 标 题: Re: 必须喷一下python
: 发信站: BBS 未名空间站 (Fri Aug 4 15:03:06 2017, 美东)
:
: 从你的这个简单问题看,你脑子真的很不怎么样,你中文系的吧?半路出家写程序。

avatar
m*n
25
说说python的anaconda吧,怎么学和学哪些?

【在 m******r 的大作中提到】
: 如果是时间紧的项目,我都用sas. 几天就能干完。
: 只有时间很充裕的项目,我才用R. 经常一卡卡一个星期,常有的事,琢磨各种R文档,
: 还到这个版来问一问。 当然你要事先找好各种理由,需要新的测试啊,业务太复杂,
: 数据太复杂啊。 肯定不能说在实验新方法 呵呵。
:
: 忍。

avatar
n*7
26
你要明白R是怎么来的
本来就是个统计计算环境而已,用的人多了慢慢修修补补成一个语言
R的强项在于几乎所有统计的东西都有R实现,因为这算是他们发论文的default语言
我要是你我会首选python来做
另外apply之类的东西有个缺点就是不好debug

忍。

【在 m*****n 的大作中提到】
: 我花了两个星期处理行情数据,就为了算个回测。
: 新工作都可能要泡汤了,对方无法理解我为什么效率这么低。
: 体会一下两个星期想用一个语言做件事情,只是弄明白它在哪里有坑,是什么心情。
: 时间计算功能缺失我就忍了,apply和loop在执行时擅自把数据类型篡改了,这不能忍。
: ================================================================
: 发信人: didadida (滴滴嗒嗒), 信区: Programming
: 标 题: Re: 必须喷一下python
: 发信站: BBS 未名空间站 (Fri Aug 4 15:03:06 2017, 美东)
:
: 从你的这个简单问题看,你脑子真的很不怎么样,你中文系的吧?半路出家写程序。

avatar
m*n
27
问题是我用了元素枚举这么底层的结构,照样出bug,这么多年来R真的一点都不改毛病?

【在 n******7 的大作中提到】
: 你要明白R是怎么来的
: 本来就是个统计计算环境而已,用的人多了慢慢修修补补成一个语言
: R的强项在于几乎所有统计的东西都有R实现,因为这算是他们发论文的default语言
: 我要是你我会首选python来做
: 另外apply之类的东西有个缺点就是不好debug
:
: 忍。

avatar
n*7
28
我也被各种implicit的转换坑过很多次
你要说为啥不改,因为这不是优先级吧
反正主要给学术界做统计分析的
也不会用来构建太复杂的系统
我也曾经考察过R的性能问题,发现官方的态度是
稳定压倒一切,性能不是优先级
哈哈
所以不满意就换语言呗,干嘛跟自己过不去
话说我现在终于不用R了真是挺开心的

病?

【在 m*****n 的大作中提到】
: 问题是我用了元素枚举这么底层的结构,照样出bug,这么多年来R真的一点都不改毛病?
avatar
d*c
29
要是不喜欢R,用着不习惯,那就换个语言
股票回测的库和框架很多,有不少免费开放平台,有C#的,有python的
如果对R本身下的功夫少,那么调用库容易,自己造轮子不太容易。
如果工作对语言有要求,没法换,那就老老实实从基础学起,没什么可说的。你可以先
骂公司非要用R,而不是R有多差,既然R很差公司还要去用R,那不是公司的问题吗?
我是出于兴趣想写个自动排版R代码的算法,把R language specification读了一遍,
以前Advanced R读了一遍。R inferno读了一遍,这之后一般就不容易掉坑里了。
无论你用什么语言,基本功都是少不了的,要是简单看点blog抄抄就上手,那也只是肤
浅地上手,没有遇到意外只是你还没遇到,或者碰巧和你习惯的类似而已。

忍。

【在 m*****n 的大作中提到】
: 我花了两个星期处理行情数据,就为了算个回测。
: 新工作都可能要泡汤了,对方无法理解我为什么效率这么低。
: 体会一下两个星期想用一个语言做件事情,只是弄明白它在哪里有坑,是什么心情。
: 时间计算功能缺失我就忍了,apply和loop在执行时擅自把数据类型篡改了,这不能忍。
: ================================================================
: 发信人: didadida (滴滴嗒嗒), 信区: Programming
: 标 题: Re: 必须喷一下python
: 发信站: BBS 未名空间站 (Fri Aug 4 15:03:06 2017, 美东)
:
: 从你的这个简单问题看,你脑子真的很不怎么样,你中文系的吧?半路出家写程序。

avatar
m*n
30
我自己出于尊重知识产权的原因,
不用Matlab而用R.
这一回R把我坑惨了,认真的决定以后转Anaconda了
《R language specification》
《Advanced R》
《R inferno》
阅读了快5000页,仅仅达到“不容易掉坑里”
——这着实符合学习俚语的难度。

【在 d******c 的大作中提到】
: 要是不喜欢R,用着不习惯,那就换个语言
: 股票回测的库和框架很多,有不少免费开放平台,有C#的,有python的
: 如果对R本身下的功夫少,那么调用库容易,自己造轮子不太容易。
: 如果工作对语言有要求,没法换,那就老老实实从基础学起,没什么可说的。你可以先
: 骂公司非要用R,而不是R有多差,既然R很差公司还要去用R,那不是公司的问题吗?
: 我是出于兴趣想写个自动排版R代码的算法,把R language specification读了一遍,
: 以前Advanced R读了一遍。R inferno读了一遍,这之后一般就不容易掉坑里了。
: 无论你用什么语言,基本功都是少不了的,要是简单看点blog抄抄就上手,那也只是肤
: 浅地上手,没有遇到意外只是你还没遇到,或者碰巧和你习惯的类似而已。
:

avatar
w*g
31
用个比较新的ubuntu比如16.04,不需要anaconda。
pip都能搞定。
不过我建议楼主不要对语言有过高的期望。
python也是坑一堆。读specification不是正确的做法。
正确的做法是语言糙快猛,你也糙快猛。
写的时候不要使奇迹淫巧,然后掉到坑里了再google。
常见的坑都掉一遍,就成老死机了。
我对R不满的还是就业面比较狭窄。

【在 m*****n 的大作中提到】
: 我自己出于尊重知识产权的原因,
: 不用Matlab而用R.
: 这一回R把我坑惨了,认真的决定以后转Anaconda了
: 《R language specification》
: 《Advanced R》
: 《R inferno》
: 阅读了快5000页,仅仅达到“不容易掉坑里”
: ——这着实符合学习俚语的难度。

avatar
m*n
32
python也有坑
例如网络连接,掉线后无法追溯原来的IP地址
但是主语法没有坑

【在 w***g 的大作中提到】
: 用个比较新的ubuntu比如16.04,不需要anaconda。
: pip都能搞定。
: 不过我建议楼主不要对语言有过高的期望。
: python也是坑一堆。读specification不是正确的做法。
: 正确的做法是语言糙快猛,你也糙快猛。
: 写的时候不要使奇迹淫巧,然后掉到坑里了再google。
: 常见的坑都掉一遍,就成老死机了。
: 我对R不满的还是就业面比较狭窄。

avatar
n*7
33
牛人,赞

【在 d******c 的大作中提到】
: 要是不喜欢R,用着不习惯,那就换个语言
: 股票回测的库和框架很多,有不少免费开放平台,有C#的,有python的
: 如果对R本身下的功夫少,那么调用库容易,自己造轮子不太容易。
: 如果工作对语言有要求,没法换,那就老老实实从基础学起,没什么可说的。你可以先
: 骂公司非要用R,而不是R有多差,既然R很差公司还要去用R,那不是公司的问题吗?
: 我是出于兴趣想写个自动排版R代码的算法,把R language specification读了一遍,
: 以前Advanced R读了一遍。R inferno读了一遍,这之后一般就不容易掉坑里了。
: 无论你用什么语言,基本功都是少不了的,要是简单看点blog抄抄就上手,那也只是肤
: 浅地上手,没有遇到意外只是你还没遇到,或者碰巧和你习惯的类似而已。
:

avatar
n*7
34
尊重知识产权是对的
转Python也是对的

【在 m*****n 的大作中提到】
: 我自己出于尊重知识产权的原因,
: 不用Matlab而用R.
: 这一回R把我坑惨了,认真的决定以后转Anaconda了
: 《R language specification》
: 《Advanced R》
: 《R inferno》
: 阅读了快5000页,仅仅达到“不容易掉坑里”
: ——这着实符合学习俚语的难度。

avatar
d*c
35
language specification没多少人看,不是必须的,我那是为了分析R代码排版。
inferno很短,可能就100页 pdf
advanced R比较长,也没有太长,而且你不一定看所有章节,也就几百页吧。
无论如何3本书到不了5000页,这个随便想想就知道。
要掌握一门语言到使用时不会经常卡住的程度,几百页的阅读量是必须的。
你随便怎么贬低R都行,但是你如果不得不用它,贬低它有什么用呢?如果你能不用R,
那就不用呗。

【在 m*****n 的大作中提到】
: 我自己出于尊重知识产权的原因,
: 不用Matlab而用R.
: 这一回R把我坑惨了,认真的决定以后转Anaconda了
: 《R language specification》
: 《Advanced R》
: 《R inferno》
: 阅读了快5000页,仅仅达到“不容易掉坑里”
: ——这着实符合学习俚语的难度。

avatar
m*n
36
只是做了个截取,R就把Dates给转成numeric了,什么狗屁东西!
> a = Sys.Date()+as.difftime(1:10,units="days")
> x = rep(NA,3)
> x[1]=a[1]; x[2]=a[4]; x[3]=a[7]
> x
[1] 17486 17489 17492
avatar
h*c
37
你这是老中式的思维,美国式的思维是谁把住了麦克风,谁就hot,
这是1984中的思维方式,但这种思维方式是一种虚无主义的遍体。
我举个例子,就是版上讨论c#的有几个,PERL则基本没有。
那么你愿意是C#TEAM 还是 PERL team

【在 d******c 的大作中提到】
: language specification没多少人看,不是必须的,我那是为了分析R代码排版。
: inferno很短,可能就100页 pdf
: advanced R比较长,也没有太长,而且你不一定看所有章节,也就几百页吧。
: 无论如何3本书到不了5000页,这个随便想想就知道。
: 要掌握一门语言到使用时不会经常卡住的程度,几百页的阅读量是必须的。
: 你随便怎么贬低R都行,但是你如果不得不用它,贬低它有什么用呢?如果你能不用R,
: 那就不用呗。

avatar
p*r
38
why dont you just you lapply instead?
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。