如何在R中将一行中的值替换为NA?

3

I have a text file:

df=read.table("E:\\value.txt", sep="\t")
df
  k    jh   fg          
1  208  0.15 0.17  
2  304  0.00 0.08

现在我想把k中不需要的值替换为NA
df$k[df$k >= 500 ]=NA

这没有问题,但我希望把同一行中jhfg所有对应的值都替换为NA

1个回答

7

很难想象之前没有人提到过这个问题(但我进行了搜索):

is.na(df1[df1$k >300, ] ) <- TRUE

这段代码对于dataframe对象来说是合法的,而"[.data.frame"则表明它对于类别更为复杂的情况可能同样适用。对于不同的类别,有特定的is.na<-方法:

> methods(`is.na<-`)
[1] is.na<-.default  is.na<-.discrete is.na<-.factor  

1
df1 <- df1[ !df1$k >500 , ],尽管[.data.frame的行为对我来说有些奇怪,但对于任何包含NA值的df$k位置,您将获得NA行。在"i"参数中使用subset或使用& is.na(df$k) - IRTFM
如果行名处于默认状态,则可以使用 rownames(df)!=2 - IRTFM
我曾尝试按行号进行逻辑测试的选择,但失败了。因为你只会得到0和1,所以你可能什么也得不到,只有第一行。尝试使用:df2[!2,] ... 返回空数据框。这个方法成功的是 df2[!seq(nrow(df2)) %in% 2,] - IRTFM
(你需要将它用作“[.data.frame”的“i”参数。)SO界面告诉我这已经变成了一种聊天形式,所以我要回到我的正常工作了。 - IRTFM

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接