我想根据一个简单的标准更新var3R data.frame中的值mydata.
var1 var2 var3
1 1 4 5
2 3 58 800
3 8 232 8
Run Code Online (Sandbox Code Playgroud)
我认为以下应该做:
mydata$var3[mydata$var3 > 500,] <- NA
Run Code Online (Sandbox Code Playgroud)
但是,这会将每个匹配记录的整行替换为NA(行的所有单元格),而不仅仅是var3值(单元格):
var1 var2 var3
1 1 4 5
2 NA NA NA
3 8 232 8
Run Code Online (Sandbox Code Playgroud)
如何确保仅替换所选变量的值?mydata应该看起来像
var1 var2 var3
1 1 4 5
2 3 58 NA
3 8 232 8
Run Code Online (Sandbox Code Playgroud)
Jil*_*ina 13
使用which和arr.ind=TRUE
> mydata[which(mydata[,3]>500, arr.ind=TRUE), 3] <- NA
> mydata
var1 var2 var3
1 1 4 5
2 3 58 NA
3 8 232 8
Run Code Online (Sandbox Code Playgroud)
或者只是修改你之前的尝试......
mydata[mydata$var3 > 500, 3] <- NA
Run Code Online (Sandbox Code Playgroud)
这也有效
mydata$var3[mydata$var3 > 500 ] <- NA # note no comma is inside [ ]
Run Code Online (Sandbox Code Playgroud)
你的尝试没有用,因为mydata$var3给出了一个向量,你正在使用它来索引它,好像它是一个矩阵,[mydata$var3 > 500,]因此抛出了一个维度错误.你几乎得到它,你所要做的就是删除代码中的逗号(参见我的上一个替代方案).