在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