【发布时间】:2014-06-03 08:23:47
【问题描述】:
我希望将数据框的第三列除以 5。这些数据框是嵌套的,如下所示:
[[44]]
Ethnicity Variant Sum
1: ASW ACCEPTOR 1
2: ASW CDS 68
3: ASW CGA_CNVWIN 1000
4: ASW CGA_MIRB 0
5: ASW DELETE 0
6: ASW DISRUPT 0
7: ASW DONOR 0
8: ASW FRAMESHIFT 0
9: ASW INSERT 1
10: ASW INTRON 54
我使用了三个命令,每个命令都成功但有脱靶效果。
lapply(ASWldtSUM,function(x)(x/5))
返回
[[44]]
Ethnicity Variant Sum
1: NA NA 0.2
2: NA NA 13.6
3: NA NA 200.0
4: NA NA 0.0
5: NA NA 0.0
这具有将所有行除以 5 的不幸效果,当类不是 $Sum 列中的整数时会导致问题。
lapply(ASWldtSUM,function(x[,3])(x/5))
具有只返回单个向量的效果,如果这不是数据帧的嵌套数组,而是语句,这将很好地工作
ASWdtSUM$NEWCOL<-lapply(ASWldtSUM,function(x[,3])(x/5))
不能简单地写,因为它是嵌套的。
在以下语句中使用 rapply:
rapply(ASWldtSUM,function(x) if (is.integer(x)) {(x/5)})
导致结果混乱。
那么,有没有一种简单的方法可以将第 4 列附加到每个嵌套的 DataFrame,或者将每个 DF(Sum)的第三列替换为除以 5 的值?
【问题讨论】:
-
lapply(yourdflist, function(x) x$Sum/5) -
@PauloCardoso 您的建议仅返回除以五的第三列,而不是所有整个数据帧。
-
是的。这就是我不回答的原因。并且该函数不是匿名的。只是一种简单的方法来演示该原理。用户在下面得到了一个很好的答案。
-
嗨,在标记之前花点时间阅读标记摘录。 dataframes 用于熊猫,而您需要 data.frame 在这里。下次小心点。请参阅此元帖子。 Warn [r] users from adding [dataframes] tag instead of [data.frame] tag