嗨,大家好问一个非常简单的问题。
如何在values < 1.5
中将values > -1.5
和0
替换为data.frame
?
应该是“管道”的最佳解决方案吗?
非常感谢!
电子。
答案 0 :(得分:4)
这很简单:
data[data > -1.5 & data < 1.5] <- 0
答案 1 :(得分:4)
replace
提供了另一种选择。
replace(DF, DF > -1.5 & DF < 1.5, 0)
在必须替换存储在列表中的多个data.frame
的值的情况下,此函数允许更简单的语法。
# 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})
答案 2 :(得分:3)
Konrad的解决方案更具一般性,但在这种特定情况下,仅使用涉及绝对值的比较可能是有意义的。
> 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