在矩阵的每个元素上测试条件

耶特卡马尔

我想测试数据帧的每个元素是否大于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]

此外,在评论中,有人建议不要使用sapplymatrix如同matrix是一个vectordim属性和单位元是单元素(在data.frame,单位是列-所以,如果我们使用sapply/lapply,它遍历列)。在这里,它循环通过的元素matrix因此,它可能不是有效的。对于matrixapplyMARGIN可以使用

df[] <- apply(df, 2, FUN = function(x) ifelse(x > 0, "sell", "buy"))

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章