r - 如何根据列名对包含 R 中多个列表的列表进行子集化,并合并到单个列表/数据框中?
问题描述
我有几个具有相同列名的列表。我正在尝试编写一个函数,从所有列表中按列名作为子集,合并到一个数据框中并添加新的列名。例如:
list1<- list(a= c(1:6),
b= c(4:9),
c= c(3:8))
list2<- list(a= c(12:17),
b= c(10:15),
c= c(11:16))
list3<- list(a= c(2:7),
b= c(14:19),
c= c(9:14))
all<- list (list1, list2, list3)
new_column_names<- c("Block1", "Block2", "Block3")
我想对所有列表“a”进行子集化,并以 new_column_names 作为列名合并到一个数据框中。有什么建议么?谢谢!
解决方案
您不能将它们变成常规的 data.frame,因为这些 a 向量具有不同的长度,而 data.frame 要求所有列的长度相同。
相反,您可以使用以下方法将它们转换为长格式的 data.frame:
stack(setNames(lapply(all, `[[`, "a"), new_column_names))
# values ind
# 1 1 Block1
# 2 2 Block1
# 3 3 Block1
# 4 4 Block1
# 5 5 Block1
# 6 12 Block2
# 7 13 Block2
# 8 14 Block2
# 9 15 Block2
# 10 16 Block2
# 11 17 Block2
# 12 2 Block3
# 13 3 Block3
# 14 4 Block3
# 15 5 Block3
# 16 6 Block3
# 17 7 Block3
推荐阅读
- r - 为 3d 散点图中的各个点指定特定的十六进制颜色
- c++ - 覆盖和净化都抱怨,但我不知道:如何使用字符串流?
- azure - 在 Azure Functions for Javascript 中 serviceBusTrigger 未注册错误
- java - 使用 Jdf 和 Intellij:专门在 intellij 中运行 Jfd 表单
- python - 当变量超出范围时,Python 不会释放内存
- hystrix - Hystrix:不能跳闸断路器
- python - Python webscraping 时,beautifulSoup 与 chrome 检查不匹配
- wix - 如何制作 64 位 MSI?
- scala - 如果你数两次会发生什么?
- c# - '在预期条件的上下文中指定的非布尔类型的表达式,靠近','。' 当日期之间