【问题标题】:use lapply to manipulate a list of list使用 lapply 操作列表列表
【发布时间】:2016-04-26 09:08:13
【问题描述】:

我有一个名为 pval 的 20 个子列表的列表,每个子列表 pval[[i]] 包含几列。我想增加一个新列pval[[i]]$class来标记向量causal_snp的元素是否出现在每个子列表的X4列中,如果是,则在新列中标记1,否则为0。

for (i in 1:20){
  pval[[i]]$class = ifelse(pval[[i]]$X4 %in% causal_snp, 1, 0)
  pval[[i]]$class = as.factor(pval[[i]]$classe)
}

上面的循环运行良好,但我想使用函数 lapply 而不是 for 循环,这是我尝试过的,但输出只包含每个子列表的新列:

pval_bis <- lapply(pval, function(x) x$classe=ifelse(x$X4 %in% causal_snp, 1, 0))

我可以在 lapply 函数中修改什么以将我的所有列保留在子列表中并在每个子列表中添加新列?谢谢。

【问题讨论】:

标签: r


【解决方案1】:

如果我们使用lapply,请使用transform 创建列

lapply(pval, transform, classe = as.integer(X4 %in% causal_snp))

在OP的代码中,赋值后需要返回x

 lapply(pval, function(x) {x$classe=ifelse(x$X4 %in% causal_snp, 1, 0);x})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-10
    • 1970-01-01
    • 2021-07-02
    • 2015-09-29
    相关资源
    最近更新 更多