楼主: 藉風說雨
2660 1

[问答] R语言for循环 [推广有奖]

  • 2关注
  • 0粉丝

本科生

44%

还不是VIP/贵宾

-

威望
0
论坛币
75 个
通用积分
1.3920
学术水平
3 点
热心指数
10 点
信用等级
6 点
经验
7050 点
帖子
74
精华
0
在线时间
110 小时
注册时间
2015-3-23
最后登录
2022-8-12

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
用r语言也有点时间了,一直大家都在说要少显式使用for循环,原因很简单:执行速度慢,但是为什么会执行速度慢一直都不知道,有人知道底层的一些原因吗?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:for循环 For R语言 不知道

爱数学 爱做菜
沙发
suimong 发表于 2015-12-4 02:33:30 |只看作者 |坛友微信交流群
所谓的用for循环慢是指和用已经vectorized的内置函数(或其他用c或cpp写的函数)相比。base R里的大部分函数以及有些包里的函数(比如dplyr,data.table等)是C或C++写的,并且已经vectorized了,也就是说你可以直接扔给这个函数一个vector,这个函数会作用于vector内的每个元素,而不需要你去写for循环显式地将函数应用在每个vector元素上。虽然最终在这些c/c++代码内vectorize的方式也是for循环,但是c++的for循环和R的for循环,效率孰高孰低一目了然了吧。如果能够使用vectorized的函数的话,那绝对是应该避免用for循环的。
另一方面,避免for循环还可以指运用apply系列函数。apply系列函数只是帮你把for循环给隐藏起来了,实质性能上和for循环是一样的。用apply函数其实只是“更加R”的一种for循环写法。当然这种写法的好处是能帮你培养vectorize的思维,不过当发生用apply写起来很费劲的时候就还是老老实实用for好了,性能上没有损失的。
已有 1 人评分经验 收起 理由
李会超 + 100 专业

总评分: 经验 + 100   查看全部评分

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-5-3 00:40