我有一个这样的多列数据框:
t <- c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
v1 <- c(5, 5, 5, 6, 7, 5, 4, 3, 1, 2)
v2 <- c(1, 2, 6, 7, 8, 5, 3, 9, 1, 4)
v3 <- c(6, 4, 3, 2, 8, 4, 3, 1, 2, 4)
dt <- data.frame(t, v1, v2, v3)
我想按列v1
中v2
的v3
条件更改列中的值t
。例如,用零替换3 < t < 7
. 现在我这样做:
dt[dt$t > 3 & dt$t < 7,]$v1 <- 0
dt[dt$t > 3 & dt$t < 7,]$v2 <- 0
dt[dt$t > 3 & dt$t < 7,]$v3 <- 0
但是,如果有很多列,那么代码就比较麻烦了。如果你这样做
dt[dt$t > 3 & dt$t < 7,]<- 0
那么所有列中的值都会发生变化。我希望列中的值t
保持不变。我怎样才能做到这一点?