由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 从apply句型的潜在危险看R语言的俚语风格
相关主题
愚蠢到极点的R日期时间计算C++(非VC++) 删除链表时如何对指针操作? 在线等回复!谢谢!
matlab struct questionC++里能否在运行时check一个object里的member的名字,并且找出其指针?
[合集] Re: Re: Re: Re: Re: Java语言学校的危险性[转载]贴一下我的 12306 实现吧
Comparison Re: 组合的枚举算法?clojure的书那本好 适合学习?
再问个最短路径问题,从apply句型的潜在危险看R语言的俚语风格 (转载)
来,做题吧。R问题请教。
算24的程序请问R里apply和sapply有什么区别
谁提示一下如何把model fitting statistics 读出来(R)
相关话题的讨论汇总
话题: apply话题: 枚举话题: 语言话题: dminutes话题: python
进入Programming版参与讨论
1 (共1页)
m*****n
发帖数: 3575
1
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在大数据领域被推为至尊,真是实至名归。
h**********c
发帖数: 4120
2
日期函数都没整明白,歇歇吧
m*****n
发帖数: 3575
3
你的论点有了,论据呢?

【在 h**********c 的大作中提到】
: 日期函数都没整明白,歇歇吧
m*****n
发帖数: 3575
4
你的论点有了,论据呢?

【在 h**********c 的大作中提到】
: 日期函数都没整明白,歇歇吧
d******c
发帖数: 2407
5
我记得这个你以前抱怨过了,而且别人给你解释的挺清楚了。
需要又重新骂一遍吗?
一找就找出来那个旧贴了
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吧

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

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

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

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

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

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

忍。

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

相关主题
来,做题吧。C++(非VC++) 删除链表时如何对指针操作? 在线等回复!谢谢!
算24的程序C++里能否在运行时check一个object里的member的名字,并且找出其指针?
谁提示一下贴一下我的 12306 实现吧
进入Programming版参与讨论
m*****n
发帖数: 3575
11
说说python的anaconda吧,怎么学和学哪些?

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

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

忍。

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

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

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

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

病?

【在 m*****n 的大作中提到】
: 问题是我用了元素枚举这么底层的结构,照样出bug,这么多年来R真的一点都不改毛病?
d******c
发帖数: 2407
15
要是不喜欢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, 美东)
:
: 从你的这个简单问题看,你脑子真的很不怎么样,你中文系的吧?半路出家写程序。

m*****n
发帖数: 3575
16
我自己出于尊重知识产权的原因,
不用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抄抄就上手,那也只是肤
: 浅地上手,没有遇到意外只是你还没遇到,或者碰巧和你习惯的类似而已。
:

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

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

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

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

n******7
发帖数: 12463
19
牛人,赞

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

n******7
发帖数: 12463
20
尊重知识产权是对的
转Python也是对的

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

相关主题
clojure的书那本好 适合学习?请问R里apply和sapply有什么区别
从apply句型的潜在危险看R语言的俚语风格 (转载)如何把model fitting statistics 读出来(R)
R问题请教。Dashagen请进
进入Programming版参与讨论
d******c
发帖数: 2407
21
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页,仅仅达到“不容易掉坑里”
: ——这着实符合学习俚语的难度。

m*****n
发帖数: 3575
22
只是做了个截取,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
h**********c
发帖数: 4120
23
你这是老中式的思维,美国式的思维是谁把住了麦克风,谁就hot,
这是1984中的思维方式,但这种思维方式是一种虚无主义的遍体。
我举个例子,就是版上讨论c#的有几个,PERL则基本没有。
那么你愿意是C#TEAM 还是 PERL team

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

p***r
发帖数: 920
24
why dont you just you lapply instead?
1 (共1页)
进入Programming版参与讨论
相关主题
如何把model fitting statistics 读出来(R)再问个最短路径问题,
Dashagen请进来,做题吧。
问个R里面avoid for loop的问题(sapply,lapply...)算24的程序
【欢迎进来讨论】for loop in R谁提示一下
愚蠢到极点的R日期时间计算C++(非VC++) 删除链表时如何对指针操作? 在线等回复!谢谢!
matlab struct questionC++里能否在运行时check一个object里的member的名字,并且找出其指针?
[合集] Re: Re: Re: Re: Re: Java语言学校的危险性[转载]贴一下我的 12306 实现吧
Comparison Re: 组合的枚举算法?clojure的书那本好 适合学习?
相关话题的讨论汇总
话题: apply话题: 枚举话题: 语言话题: dminutes话题: python