我正在处理大约 10 个具有相同列名但行数不同的数据框。我想创建一个包含所有同名列的列表。
所以,假设我有 2 个同名的数据框。
a<-seq(0,20,1)
b<-seq(20,40,1)
c<-seq(10,30,1)
df.abc.1<-data.frame(a,b,c)
a<-seq(20,50,1)
b<-seq(10,40,1)
c<-seq(30,60,1)
df.abc.2<-data.frame(a,b,c)
Run Code Online (Sandbox Code Playgroud)
我知道我可以根据这些数据创建一个列表,例如,
list(df.abc.1$a, df.abc.2$a)
Run Code Online (Sandbox Code Playgroud)
但我不想输入长数据框名称和列名称。
我本来希望做这样的事情
list(c(df.abc.1, df.abc.2)$a)
Run Code Online (Sandbox Code Playgroud)
但是,它返回 df.abc.1$a 的列表
也许有一种方法可以跨多个 data.frames 使用 grep 函数?也许循环可以完成这个任务?
不确定是否会更好,但也许
lapply(list(df.abc.1, df.abc.2), function(x) x$a)
Run Code Online (Sandbox Code Playgroud)
对于多于一列
lapply(list(df.abc.1, df.abc.2), function(x) x[, c("a","b")])
Run Code Online (Sandbox Code Playgroud)