我是R的初学者,之前我习惯使用for循环
在做宏时。
但是在学习了R之后,我开始学习这个有趣的命令sapply
&
lapply
但想知道如何使用此命令进行多次循环。
例如,当我使用for循环执行同时工作时, 我在for循环中嵌套for循环,例如下面的例子:
for i in ~~~{
for j in ~~~~~
}
}
了解sapply
& lapply
,我发现自己一遍又一遍地重复相同的命令,因为我不知道如何使用这些命令进行多次循环。
例如,下面是拆分文件目录字符串并返回的代码
第7和第8块进入矢量。
dir3<-sapply(strsplit(as.character(dir2),split="/",fixed=TRUE),function(x) (x[7]))
dir4<-as.list(dir3)
code<-do.call(rbind, dir4)
colnames(code)<-c("code")
dir5<-sapply(strsplit(as.character(dir2),split="/",fixed=TRUE),function(x) (x[8]))
dir6<-as.list(dir5)
fyear<-do.call(rbind, dir6)
colnames(fyear)<-c("fyear")
有没有办法在不复制相同命令行的情况下执行相同的任务(=第二次循环)? 谢谢:))
答案 0 :(得分:0)
您只能*apply
*apply
命令的输出。
即:
sapply(
sapply( 1:10, function(x) x^2 ),
function(x) x^3
)
显然,有一个更好的方法来做上面的例子,但你明白了。
另一种方法是将mapply
与expand.grid
一起使用。