2

嗨,伙计们,一个非常简单的问题。如何在 a 中 替换values < 1.5and ?应该是“管道”的最佳解决方案吗?values > -1.50data.frame

非常感谢!

E.

4

3 回答 3

6

就这么简单:

data[data > -1.5 & data < 1.5] <- 0
于 2013-06-08T16:28:42.607 回答
5

replace提供另一种选择。

replace(DF, DF > -1.5 & DF < 1.5, 0)

data.frame在您必须在存储在列表中的多个 s 中替换值的情况下,此函数允许更简单的语法。

# list of data.frames
dframes <- replicate(3, data.frame(a=seq(-2, 2, by=1), b=seq(2, -2, by=-1)), simplify=FALSE)
# perform the replacement across all DFs in the list.
lapply(dframes, function(DF) replace(DF, DF > -1.5 & DF < 1.5, 0))

否则,您必须编写类似

lapply(dframes, function(DF) {DF[DF > -1.5 & DF < 1.5] <- 0;DF})
于 2013-06-08T17:15:21.933 回答
3

康拉德的解决方案更具普遍性,但在这种特定情况下,仅使用涉及绝对值的比较可能是有意义的。

> dat <- data.frame(x = seq(-2, 2), y = rnorm(5))
> dat
   x           y
1 -2 -1.48698044
2 -1 -0.05863244
3  0  1.75314296
4  1 -0.72946147
5  2 -0.74845237
> dat$x[abs(dat$x) < 1.5] <- 0
> dat
   x           y
1 -2 -1.48698044
2  0 -0.05863244
3  0  1.75314296
4  0 -0.72946147
5  2 -0.74845237
于 2013-06-08T16:35:45.093 回答