R 替换NA零数据帧:代码不工作

R 替换NA零数据帧:代码不工作,r,R,我正在寻找一种方法,将我的数据帧中的NA替换为零,并在这里找到了一个很好的答案: 我使用aL3xa答案中的代码构建了一个示例矩阵,发现NA被替换得很好。 但是,当我开始将代码应用于我自己的数据帧时,它似乎不起作用: 总金额(不适用(日分)) [1] 453562 数据帧本质上是具有相同长度的向量列表。如果要更改数据帧中的元素,必须将更改应用于列出的向量之一。您可以通过调用数据帧对象(df)来实现这一点,就像它是一个具有命名列的矩阵一样: df[is.na(df$dat.sub),"dat.s

我正在寻找一种方法,将我的数据帧中的NA替换为零,并在这里找到了一个很好的答案:

我使用aL3xa答案中的代码构建了一个示例矩阵,发现NA被替换得很好。 但是,当我开始将代码应用于我自己的数据帧时,它似乎不起作用:

总金额(不适用(日分))

[1] 453562


数据帧本质上是具有相同长度的向量列表。如果要更改数据帧中的元素,必须将更改应用于列出的向量之一。您可以通过调用数据帧对象(
df
)来实现这一点,就像它是一个具有命名列的矩阵一样:

 df[is.na(df$dat.sub),"dat.sub"]<-0

df[is.na(df$dat.sub),“dat.sub”]该命令适用于正确的数据帧:

ddf = structure(list(A = c(1L, NA, 3L), B = c(NA, 5L, NA), C = c(5L, 
NA, 7L)), .Names = c("A", "B", "C"), class = "data.frame", row.names = c(NA, 
-3L))

str(ddf)
'data.frame':   3 obs. of  3 variables:
 $ A: num  1 0 3
 $ B: num  0 5 0
 $ C: num  5 0 7

ddf
   A  B  C
1  1 NA  5
2 NA  5 NA
3  3 NA  7

ddf[is.na(ddf)] =0
ddf
  A B C
1 1 0 5
2 0 5 0
3 3 0 7

您需要提供。如果无法将
0
强制为
dat.sub
列类,则它将无法正常工作。您的所有列是否都是
因子
?@celiomsj正常,但可能会出现一些警告消息?@agenis是的,它会生成警告。@qwerty正常,所以您是否可以执行dat.sub这不是完全正确的,类似于
df[is.na(df)]=0的功能非常好。
ddf = structure(list(A = c(1L, NA, 3L), B = c(NA, 5L, NA), C = c(5L, 
NA, 7L)), .Names = c("A", "B", "C"), class = "data.frame", row.names = c(NA, 
-3L))

str(ddf)
'data.frame':   3 obs. of  3 variables:
 $ A: num  1 0 3
 $ B: num  0 5 0
 $ C: num  5 0 7

ddf
   A  B  C
1  1 NA  5
2 NA  5 NA
3  3 NA  7

ddf[is.na(ddf)] =0
ddf
  A B C
1 1 0 5
2 0 5 0
3 3 0 7