在R中的数据框中将负值转换为零

Sam*_*ert 7 r

我在R中有一个数据帧,我想将所有列(在ID之外)从负转换为零

id1  id2  var1  var2  var3
-1   -1   0     -33     5
-1   -2   9     -10    -1
Run Code Online (Sandbox Code Playgroud)

我可以使用代码行转换所有列,如:

temp[temp < 0] <- 0
Run Code Online (Sandbox Code Playgroud)

但我无法将其调整为仅一列的列.我试过了:

temp[temp < 0, -c(1,2)] <- 0
Run Code Online (Sandbox Code Playgroud)

但是这个错误说明不存在不存在的行

Bat*_*hek 11

编辑你的变种

temp[,-c(1,2)][temp[, -c(1,2)] < 0] <- 0


A5C*_*2T1 6

您可以尝试使用replace:

> mydf[-c(1, 2)] <- replace(mydf[-c(1, 2)], mydf[-c(1, 2)] < 0, 0)
> mydf
  id1 id2 var1 var2 var3
1  -1  -1    0    0    5
2  -1  -2    9    0    0
Run Code Online (Sandbox Code Playgroud)