我有一个包含几百列的数据框,每列都有数字数据。
对于每一列,我想标识单元格的值,该值最接近零,而不是正数。
例如
X = c(-1,-2,-3,-4,-5,-6,-7,-8,-9,-10)
Y = c(5,4,3,2,1,0,-1,-2,-3,-4)
Z = c(-11,-12,-13,-14,-15,-16,-17,-18,-19,-20)
df <- data.frame(X, Y, Z)
我想要一些函数(有趣)来返回此向量:
fun(df)
[1] -1 0 -11
我以为我可以使用Apply函数,甚至可以使用循环或管道?
OP要求
值最接近零而不是正数的单元格
(由@Heroka指出),返回值的向量作为预期结果。
可以使用data.table
以下方法实现:
library(data.table)
setDT(df)[, unlist(lapply(.SD, function(x) max(x[x<=0])))]
X Y Z
-1 0 -11
setDT(df)
通过引用将data.frame强制df
为data.table ,即不进行复制。unlist()
将结果数据表强制转换为(命名的)向量。本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句