我导入一个嵌套的未知长度列表(此处2)和未知名称(此处为iter1和iter2),并获取该列表的名称:
iter1 <- list(1, 2, 3, 4)
iter2 <- list(1, 2, 3, 4)
nested_list <- list(iter1 = iter1, iter2 = iter2)
names <- names(nested_list)接下来我要做的就是:
unlist <- data.frame(x=unlist(nested_list$iter1))但由于我事先不知道名字,所以我想做这样的事情:
unlist <- data.frame(x=unlist(nested_list$names[1]))这肯定不管用。没有错误,但创建的列表为空。
最后,我想做这样的事情:
for(i in 1:length(nested_list)) {
unlist <- data.frame(x=unlist(nested_list$names[i]))
print(unlist)
}发布于 2020-03-05 13:30:18
使用Map,避免使用names向量。
data.frame(Map(unlist, nested_list)[1])
# iter1
# 1 1
# 2 2
# 3 3
# 4 4或者,为了给列名加上mapply
data.frame(x=mapply(unlist, nested_list)[,1])
# x
# 1 1
# 2 2
# 3 3
# 4 4括号中的1表示第一个列表名,相应地使用2作为第二个名称。
数据
nested_list <- list(iter1 = list(1, 2, 3, 4), iter2 = list(1, 2, 3, 4))发布于 2020-03-05 13:18:56
也许你可以试试下面的代码
unlist <- data.frame(x=unlist(nested_list[names[1]]))这样的话
x
iter11 1
iter12 2
iter13 3
iter14 4发布于 2020-03-05 13:23:07
我不确定我是否得到了你想要的结果,如果需要的话,你能精确点吗?
iter1 <- list(1, 2, 3, 4)
iter2 <- list(1, 2, 3, 4)
nested_list <- list(iter1 = iter1, iter2 = iter2)
names <- names(nested_list)
cbind.data.frame(lapply(nested_list, unlist))
#> iter1 iter2
#> 1 1 1
#> 2 2 2
#> 3 3 3
#> 4 4 4https://stackoverflow.com/questions/60546270
复制相似问题