gpt4 book ai didi

r - 转换为循环应用

转载 作者:行者123 更新时间:2023-12-01 09:35:53 26 4
gpt4 key购买 nike

在 R 中,如何使用 apply 之类的函数替换以下代码, lapply , rapply , do.call , 等等。?

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=","))

哪个有效。但是对于那个 slist[[s]] <- 0在同一个 for 循环中的一部分,我不知道该怎么做。

编辑:这就是我正在尝试做的。对于向量 u ,我正在生成该向量中所有子集的列表。然后对于每个子集,我将其分配给 s ,然后使用字符串 s作为 slist 中元素的名称.有点奇怪,我知道,但这是家庭作业。对于上面的代码,这将是 slist 的前 5 个元素:
 > slist
$`10`
[1] 0

$`11`
[1] 0

$`12`
[1] 0

$`10,11`
[1] 0

$`10,12`
[1] 0

是的,我只是想学习如何正确使用 apply 和 stuff。

最佳答案

这是一种解决方案:

n <- unlist(lapply(seq_along(u), function(i) {
apply(combn(length(u),i),2, function(x) paste(u[x], collapse=','))
}
))

slist <- list()
slist[n] <- 0

更新 和@djhurio同时发帖,很像,不过我冒昧改用 combn所以它处理 u正如@djhurio 指出的,长度为 1。

关于r - 转换为循环应用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8142362/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com