我想测试数据帧的每个元素是否大于0。如果大于零,我们将“购买”,否则“出售”。我用过 它分配了每个值“卖”。我用下面的代码。还建议使用环路解决方案。
df1<-sapply(df,function(x) ifelse(x>0,yes="buy",no="sell"))
如果它是一个matrix
(或什至data.frame
),请使用比较运算符创建一个逻辑矩阵。这给出TRUE/FALSE
值为1/0的逻辑矩阵。如果我们向其添加1,它将更改为2/1
并基于该索引,我们可以替换值(在中R
,索引从1开始)
df[] <- c("sell", "buy")[(df >0) + 1]
此外,在评论中,有人建议不要使用sapply
上matrix
如同matrix
是一个vector
与dim
属性和单位元是单元素(在data.frame
,单位是列-所以,如果我们使用sapply/lapply
,它遍历列)。在这里,它循环通过的元素matrix
。因此,它可能不是有效的。对于matrix
,apply
与MARGIN
可以使用
df[] <- apply(df, 2, FUN = function(x) ifelse(x > 0, "sell", "buy"))
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句