2015-05-17 58 views
0

我是一個初學者與R,並在此之前,我曾用於循環 做宏時。 但是在學習R之後,我得去學習這個有趣的命令sapply & lapply但是想知道如何使用這個命令來進行多重循環。R:如何做多個循環與sappy或lapply

舉例來說,當我使用了循環來同時進行工作, 我嵌套的循環在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") 

有什麼辦法可以在不復制相同的命令行的情況下執行相同的任務(=第2次循環)嗎? 謝謝:)

回答

0

你可以只是*apply*apply命令的輸出。

即:

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

顯然有更好的方式來做到上面的例子,但你明白了吧。

另一種方式是使用mapplyexpand.grid