首页 > 解决方案 > 如何以数据框的名称为因素融合数据框列表?

问题描述

给定:具有相同列数但行数不同的数据框列表。
试图得到:一个从所有数据帧中提取同一列并生成另一列的函数,该列标记公共列来自哪个数据帧。

我的推理:

  1. 使用我想要的列和数据框的名称来制作一个包含两列的新数据框:标签列(数据框的名称)和感兴趣的列
  2. 对每个数据帧执行此操作。
  3. rbind所有数据框
  4. 创建一个函数,根据请求对尽可能多的数据框输入执行此操作

鉴于:

a <- data.frame(V1=c(1:3),V2=c(1001:1003))
b <- data.frame(V1=c(1:5),V2=c(2001:2005))

我想要的是:

rbind(data.frame(group="a",value=c(a$V2)),data.frame(group="b",value=c(b$V2)))

努力做一个这样的功能:

my_fn <- function(...) {
  arg <- structure(list(...),names=as.list(substitute(list(...)))[-1L])
  do.call(rbind,lapply(arg,function(x) {data.frame(group="x",value=c(x$V2))})) %>% return
}

在我尝试的功能中,我几乎可以得到我想要的,除了group="x"被读取为"x". 但我希望它在列表中读取为 x=name of object,然后放入“”。

标签: r

解决方案


推荐阅读