在R中,如何使用apply
,lapply
,rapply
,do.call
等功能替換下面的代碼?轉換for循環申請
u <- 10:12
slist <- list()
for (i in 1:length(u)) {
p <- combn(u, i)
for (j in 1:ncol(p)) {
s <- paste(p[,j], collapse=",")
slist[[s]] <- 0
}
}
對於此部分:
for (j in 1:ncol(p)) {
s <- paste(p[,j], collapse=",")
我想是這樣的:
s <- apply(p, 2, function(x) paste(x, collapse=","))
其中一期工程。但是對於那個相同的for循環中的那個slist[[s]] <- 0
部分,我不知道該怎麼做。
編輯:這就是我想要做的。對於矢量u
,我正在生成該矢量中所有子集的列表。然後,對於每個子集,我將它分配到s
,然後使用字符串s
作爲slist
中元素的名稱。有點奇怪,我知道,但這是爲了做家庭作業。對於上面的代碼,這將是SLIST的第5個元素:
> slist
$`10`
[1] 0
$`11`
[1] 0
$`12`
[1] 0
$`10,11`
[1] 0
$`10,12`
[1] 0
是的,我只是想學習如何使用應用和東西正常。
你的for循環會產生一個不尋常的列表。也許你想解釋你真的想要做什麼? – Andrie
好的,完成了!我編輯了原文。 – Crystal