[问题] apply 取代for

楼主: disney82231 (菜逼八YOYOYO)   2018-03-29 14:59:49
[问题类型]:
程式咨询(我想用R 做某件事情,但是我不知道要怎么用R 写出来)
[软件熟悉度]:
入门(写过其他程式,只是对语法不熟悉)
[问题叙述]:
用for 写了一个循环,想用apply写出一样的结果
另外想请问,在多数情况下,apply都能取代for吗
[程式范例]:
for (i in 2:10){
x$v1[x[,i]==1] <- i }
}
若每列x的第i行=1时,x每列的第一行改成i
[关键字]:
apply for
作者: andrew43 (讨厌有好心推文后删文者)   2018-03-29 15:10:00
看起来就不像是apply。apply是逐列或逐行做同一个func你的注解和code似乎不是同义的。
作者: clansoda (小笨)   2018-03-29 15:26:00
Hi, I suggest you to watch this article #1QhBLjUrI have explained when and why you should use applyor for loop in a given scenario
作者: vfgce (小兵)   2018-03-29 18:49:00
你有跑过你写的东西吗?你这样是把第10行值为1的相对V1值设为10...对不起,看错了...有不只一个i行=1时,第一行如何取?x1 = apply( x[,2:10],1, function(a) which(a==1)+1 )再令x$v1=x1, 假设每列2-10行中都会也只有一个1,但问题再变过就不见得能用这种方法处理.一般若是涉及索引,用for 比较容易写...apply不一定能写.对了,一般在apply中不修改变量值,而是传回值...有些东西想不出来怎么用apply就只能用for..但很多时候,是不够了解 apply怎么用...
作者: celestialgod (天)   2018-03-29 22:13:00
这个用vectorize加速比较好,apply不适用晚点传code测了一下... 其实循环改一改就好XDD
作者: obarisk (OSWALT)   2018-03-30 05:32:00
这个问题用diag可以解

Links booklink

Contact Us: admin [ a t ] ucptt.com