消除列表中的所有负值 - R.

时间:2015-06-02 09:33:10

标签: r list

我的问题似乎很容易,但不知怎的,我没有遇到一个合适的解决方案。我想用R中的值(0)替换R中列表(!)中的所有负值。

对于矢量或矩阵,这很容易:

matrixx <- as.matrix(rnorm(20,0,0.5))
matrixx[matrixx<0] <- 0

但是当我尝试将它应用于列表(具有不同的长度,所有条目都是数字)时,它返回:

  

(list)对象无法强制输入'double'

我试过了unlist(x),但这似乎也不能完成。我错过了什么?

以下是示例数据集:

 dummy_list <- list(0)
 dummy_list[[1]] <- c(-0.5, 0, 0.5, 1.0, 1.5, 2.0)
 dummy_list[[2]] <- c(-5, -2, 10)

感谢您的帮助!

1 个答案:

答案 0 :(得分:6)

使用lapply将(匿名)函数应用于列表的每个元素。

示例数据:

> l <- list(x=rnorm(5), y=rnorm(3))
> l
$x
[1]  0.2682050  0.9015505 -0.8334734  1.3497408  1.9482120

$y
[1] -1.92907352 -0.24787634 -0.08115765

然后:

> lapply(l, function(v) {v[v<0] <- 0; v} )
$x
[1] 0.2682050 0.9015505 0.0000000 1.3497408 1.9482120

$y
[1] 0 0 0