我有一个名为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函数中,我可以修改哪些内容来将所有列保留在子列表中,并在每个子列表中添加新列?谢谢。
发布于 2016-04-26 09:14:13
如果我们使用的是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})https://stackoverflow.com/questions/36860323
复制相似问题