根据列值更改行中的值并replace指定的列范围

我发现我的答案大部分是: 根据列值r更改行中的值 。 有两个区别:我想基于分类variables的testing来replace值,我想指定我想要replace的值的范围。 我正在处理一个8600奇数行和170列的dataframe。

这是一个例子:

x = data.frame(c("Jan", "Feb", "March", "April"), c(9,3,4,6), c(8, 12,9,11), c(10, 9, 7, 0.6)) names(x) = c("Month","VAR1","VAR2", "VAR3") 

我想用NA来replace月份为“March”或“April”的VAR2和VAR3(而不是VAR1)的所有值。

我试过: x[x$Month==c("March", "April"), ] <- data.frame('x', NA, 3:4)但是我得到错误

 Warning message: In `[<-.factor`(`*tmp*`, iseq, value = c(1L, 1L)) : invalid factor level, NA generated 

print(x)给出:

  Month VAR1 VAR2 VAR3 1 Jan 9 8 10 2 Feb 3 12 9 3 <NA> NA 3 1 4 <NA> NA 4 1 

有一些明显的编程初学者语法错误,我无法过去!

尝试:

 x[x$Month %in% c("March", "April"), c("VAR2", "VAR3")] = NA