R 数据帧中的值在间隔内变为零

R 数据帧中的值在间隔内变为零,r,dataframe,intervals,R,Dataframe,Intervals,我对R还是新手,我试着把数据帧中的值设为零,如果它们在区间IRe{-0,5:0,5} 数据框如下所示: var1 var2 var3 1 -0.2 1.0 0.7 2 0.2 -0.5 -0.2 3 1.0 0.2 3.0 4 0.5 2.0 4.0 5 -0.7 4.0 0.3 我只找到了一种简单的解决方案(例如dat[abs(dat)-0.5&datahh,我把dat忘在里面了。非常感谢! var1 var2 var3 1 0.0 1.0 0.7 2

我对R还是新手,我试着把数据帧中的值设为零,如果它们在区间IRe{-0,5:0,5} 数据框如下所示:

  var1 var2 var3
1 -0.2  1.0  0.7
2  0.2 -0.5 -0.2
3  1.0  0.2  3.0
4  0.5  2.0  4.0
5 -0.7  4.0  0.3
我只找到了一种简单的解决方案(例如<0.5):

你能帮我找到一个更优雅的解决这个问题的方法吗? 非常感谢您的帮助。

您可以使用“data.frame”,而不是使用for循环创建数据帧:
Instead of creating the data frame with a for loop, you can use ``data.frame``:
var1 <- c(-0.2,0.2,1,0.5,-0.7)
var2 <- c(1,-0.5,0.2,2,4)
var3 <- c(0.7,-0.2,3,4,0.3)

dat<-data.frame(var1=var1,var2=var2,var3=var3)

To replace values based on your conjunction do:
dat[dat>-0.5 & dat<0.5]=0
var1为什么不:

> dat[ abs(dat) < 0.5] <- 0
> dat
  var1 var2 var3
1  0.0  1.0  0.7
2  0.0 -0.5  0.0
3  1.0  0.0  3.0
4  0.5  2.0  4.0
5 -0.7  4.0  0.0
>dat[abs(dat)<0.5]dat
var1 var2 var3
1  0.0  1.0  0.7
2  0.0 -0.5  0.0
3  1.0  0.0  3.0
4  0.5  2.0  4.0
5 -0.7  4.0  0.0

dat[dat>-0.5&datahh,我把dat忘在里面了。非常感谢!
  var1 var2 var3
1  0.0  1.0  0.7
2  0.0 -0.5  0.0
3  1.0  0.0  3.0
4  0.5  2.0  4.0
5 -0.7  4.0  0.0
Instead of creating the data frame with a for loop, you can use ``data.frame``:
var1 <- c(-0.2,0.2,1,0.5,-0.7)
var2 <- c(1,-0.5,0.2,2,4)
var3 <- c(0.7,-0.2,3,4,0.3)

dat<-data.frame(var1=var1,var2=var2,var3=var3)

To replace values based on your conjunction do:
dat[dat>-0.5 & dat<0.5]=0
> dat[ abs(dat) < 0.5] <- 0
> dat
  var1 var2 var3
1  0.0  1.0  0.7
2  0.0 -0.5  0.0
3  1.0  0.0  3.0
4  0.5  2.0  4.0
5 -0.7  4.0  0.0