R:如何使用sappy或lapply进行多次循环

时间:2015-05-17 12:20:48

标签: r

我是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")

有没有办法在不复制相同命令行的情况下执行相同的任务(=第二次循环)? 谢谢:))

1 个答案:

答案 0 :(得分:0)

您只能*apply *apply命令的输出。

即:

sapply(
   sapply( 1:10, function(x) x^2 ), 
   function(x) x^3
)

显然,有一个更好的方法来做上面的例子,但你明白了。

另一种方法是将mapplyexpand.grid一起使用。