lixuejiao0321 发表于 2017-11-22 15:26
a
谢谢,不过我想问的是如何把指定列的na变成0,之前的答题是把整个df的na变成0,我想只给几列进行操作,弄半天都没结果最后我删除那几列再添加上的
-------------------------------------------------------
我已经解决单列赋值的问题
> df <- data.frame(x1=c(1,2,NA),x2=c(NA,NA,2),X3=c(5,5,5))
> df
x1 x2 X3
1 1 NA 5
2 2 NA 5
3 NA 2 5
df[is.na(df[,1]),1]<-0 对第一列的NA赋值0
那么问题来了 ,怎样对多列进行这个操作,我尝试 将第一和第二列进行赋值
df[is.na(df[,c(1,2)]),c(1,2)]<-0 但是会报错
问题出在哪里呢???
---------------------
我大概看了下,问题应该是两列的逻辑值应该对应两列的实际值,但是我写的那部分应该对不上,我换了个方案如下
c(as.matrix(df))[c(df[,c(1,2)]==0)] 这个就是把两列的值转换成向量了,但是存在一个向量循环的问题纠结