首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用匹配为数据帧列表创建新列

使用匹配为数据帧列表创建新列
EN

Stack Overflow用户
提问于 2019-05-02 04:32:22
回答 1查看 28关注 0票数 1

我有一个要在其上执行lapply函数的数据帧列表。其目标是通过将行名与另一个引用数据帧进行匹配,将新列symbol添加到每个数据帧中。这在非lapply形式中非常有效:

代码语言:javascript
复制
df1$symbol <- dds$symbol[ match(rownames(df1), rownames(dds)) ]

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

代码语言:javascript
复制
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

或者:

代码语言:javascript
复制
lapply(result_list, function(x) {
  x[["symbol"]] <- dds$symbol[ match(rownames(x), rownames(dds)) ]
})
Error in x[["symbol"]] <- dds$symbol[ match(rownames(x), rownames(dds)) ] :
  replacement has length zero

lapply(result_list, function(x) {
  x[["symbol"]] <- dds[["symbol"]][ match(rownames(x), rownames(dds)) ]
})
Error in x[["symbol"]] <- dds[["symbol"]][ match(rownames(x), rownames(dds)) ] :
  replacement has length zero
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-02 04:33:28

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

代码语言:javascript
复制
lst1 <- mget(result_list)

然后循环访问“lst1”

代码语言:javascript
复制
lapply(lst1, function(x) {
   x$symbol <- dds$symbol[ match(rownames(x), rownames(dds)) ]
   x
   })
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55942370

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档