使用匹配项为数据框列表创建新列

时间:2019-05-01 20:32:22

标签: r

我有一个数据框列表,可以在其上执行lapply功能。目的是通过将行名与另一个参考数据框进行匹配来向每个数据框添加新列line。这在不愉快的情况下效果很好:

symbol

但是在多次语法尝试中失败。我似乎得到的最接近的是:

df1$symbol <- dds$symbol[ match(rownames(df1), rownames(dds)) ]

或者:

result_list <- c("df1", "df2", "df3")
lapply(result_list, function(x) {
  x$symbol <- dds$symbol[ match(rownames(x), rownames(dds)) ]
})

[[1]]
character(0)

[[2]]
character(0)

[[3]]
character(0)

Warning messages:
1: In x$symbol <- mcols(dds)$symbol[match(rownames(x), rownames(dds))] :
  Coercing LHS to a list
2: In x$symbol <- mcols(dds)$symbol[match(rownames(x), rownames(dds))] :
  Coercing LHS to a list
3: In x$symbol <- mcols(dds)$symbol[match(rownames(x), rownames(dds))] :
  Coercing LHS to a list

1 个答案:

答案 0 :(得分:1)

我们需要获取列表中“字符串”的值。 mget根据标识符以字符串的形式从中返回“ data.frame”

lst1 <- mget(result_list)

然后遍历“ lst1”

lapply(lst1, function(x) {
   x$symbol <- dds$symbol[ match(rownames(x), rownames(dds)) ]
   x
   })