【发布时间】:2021-02-07 22:05:33
【问题描述】:
你能帮帮我吗?
我想根据 R 数据框中包含的信息制作一个列表。找到了解决办法,但是不通用。
例如,让我们从这个数据框开始:
df <- data.frame(vertices = paste(letters[1:20]), modules = rep(1:4, 5))
我想用df$modules 把数据框变成一个列表。列表中的项目应包含来自df$vertices 的数据。所以我找到了这个解决方案:
list1 <- split(df, df$modules)
list2 <- vector(mode = "list", length = length(unique(df$modules)))
list2[[1]] <- as.vector(list1[[1]]$vertices)
list2[[2]] <- as.vector(list1[[2]]$vertices)
list2[[3]] <- as.vector(list1[[3]]$vertices)
list2[[4]] <- as.vector(list1[[4]]$vertices)
如您所见,它可以工作,但并不通用,因为您需要手动将这么多行添加到代码的末尾length(unique(df$modules))。
我也尝试了一个while循环,但没有成功:
i <- 1
while (i == length(list2)) {
list2[[i]] <- as.vector(list1[[i]]$vertices)
list2
}
这个问题有通用的解决方案吗?谢谢!
【问题讨论】:
标签: r arrays list dataframe loops