我有几个名称相似的列表,如“dist124”,“dist131”等。我在一个数据框中绑定这些列表/数组时遇到了问题。我的代码是这样的:获取多个列表的最大长度
id <- c(124,131,137,198)
# create the dataframe with nrow as an initial size only for test
# and ncols as the max length of my lists
df <- data.frame(matrix(NA, nrow = 4, ncol = 33))
row.names(df) <- id
a = 1
for(i in id){
df[a,] <- do.call(rbind, lapply(paste("dist",i, sep=""), get))
a <- a+1}
然后我收到此错误信息:
错误
[<-.data.frame
(*tmp*
,一,值= C(82.4416264694195,505.003082621159,:更换了5个项目,需要33
我知道,那是因为我的名单有不同的长度,所以为了解决这个问题,我想改变我的所有列表的长度一次(因为它们是超过200个列表)。
但我无法找到一个解决方案,以获得这些列表的最大长度的循环。
我已经找到了解决方案,长度不等这里的清单:
adding NA to make all list elements equal length
所以我试图以使其适应我的情况下,像这样:
b <- 1
for(i in id){
assign()
n[b] <- length(paste("dist",i, sep=""))
lapply(paste("dist",i, sep=""), `length<-`, n)
b <- b+1}
如果我运行长度(dist124)= length(dist198),例如,我可以使它们相等,但我正在寻找循环解决方案,因为我有很多列表来更新其长度。
为什么你想要将不同的列表整合到一个'data.frame'中? –
因为然后我需要做一些计算,并在独特的文件中导出它们。 lmo的解决方案对我来说效果很好。谢谢:) –