如何在R语言中将含重复名称元素的列表转换为data.frame?
将含重复名称的列表转换为目标data.frame
这里有几种简单的实现方法:
方法1:按名称提取并合并(通用且直观)
先分别提取所有name和values元素,再合并成data.frame:
# 提取所有name元素并合并为向量 name_col <- unlist(l[names(l) == "name"]) # 提取所有values元素并合并为向量 values_col <- unlist(l[names(l) == "values"]) # 生成目标data.frame df <- data.frame(name = name_col, values = values_col)
方法2:利用矩阵转置(一行代码简洁版)
通过unlist展开列表,再转成矩阵后转成data.frame,最后设置列名:
df <- setNames( data.frame(matrix(unlist(l), ncol = 2, byrow = TRUE), stringsAsFactors = FALSE), c("name", "values") )
方法3:通过Map+do.call批量绑定小data.frame
把每一组name和values配对成小data.frame,再批量合并:
df <- do.call(rbind, Map(data.frame, name = l[names(l)=="name"], values = l[names(l)=="values"]))
运行以上任意一种方法后,都能得到你想要的结果:
> df name values 1 lol 1 2 kek 2 3 pip 3 4 raph 4 5 mike 2 6 leo 1
内容的提问来源于stack exchange,提问作者trilisser
相关产品推荐
相关产品推荐

