我在 R 中相对较新(约 3 个月),所以我刚刚掌握了所有不同的数据类型。虽然列表是一种将不同数据都保存在一个地方的 super 有用的方法,但它们对于函数调用也极其不灵活,并且让我感到焦虑。
对于我正在做的工作,我经常使用列表,因为我需要保存一堆不同长度的向量。例如,我正在跟踪大约 10,000 辆不同车辆的性能统计数据,并且有些车辆非常相似,它们在某些分析中基本上可以被视为相同的车辆。
假设我们有以下车辆 ID 列表:
List <- list(a=1, b=c(2,3,4), c=5)
为简单起见。
我想做两件事:
2
,它应该告诉我b
或 [2]
.我觉得它应该像你怎么做一样简单match(3,b)
> 2
NA
.到目前为止我必须做的是:for(i in length(List)) {
length(List[[i]]) <- max(as.numeric(as.matrix(summary(List)[,1])))
}
DF <- as.data.frame(List)
这似乎很愚蠢。
最佳答案
对于你的第一个问题:
which(sapply(List, `%in%`, x = 3))
# b
# 2
对于您的第二个问题,您可以使用这样的函数:
list.to.df <- function(arg.list) {
max.len <- max(sapply(arg.list, length))
arg.list <- lapply(arg.list, `length<-`, max.len)
as.data.frame(arg.list)
}
list.to.df(List)
# a b c
# 1 1 2 5
# 2 NA 3 NA
# 3 NA 4 NA
关于r - 列表中的元素。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13040543/