R错误(从NA到0):数据框中列的下标重复

时间:2018-06-25 16:25:16

标签: r function dataframe na

我在Stackoverflow上查看了多个答案,但我仍无法解决问题。我做了一个可以正常工作的函数,但是我添加了一些东西,现在它不再起作用了。我想将所有NA都替换为0,这对我来说似乎很简单。

这是我的功能,我添加了bframe[is.na(bframe)] <- 0

B <- function(frame1, frame2, column){
  bframe <- merge(frame 1, frame2, by = column, all = TRUE)
  bframe$result <- bframe$freq.x - bframe$freq.y
  bframe$percentage <- (bframe$result/bframe$freq.y)*100
  bframe[is.na(bframe)] <- 0
  return(bframe)
}

B(DT2_1, 2_1, "BurgS")

但是,它给出了以下错误:Error in '[<-.data.frame'('* tmp *, thisvar, value = 0) : duplicate subscripts for columns

发生错误是因为存在NA,并且它无法执行计算:

BurgS  freq.x  freq.y  result   percentage  percentageABS
1      9204    184042  -174838  -94.99897   94.99897 
2      150     3034    -2884    -95.05603   95.05603 
3      130     2602    -2472    -95.00384   95.00384 
98     NA      47      NA       NA          NA 

并非每个数据框都具有这种结构,因此我正在寻找一种解决方案,该解决方案可以更改整个数据集中的NA。有人可以帮我吗?

更改26/6/2018:我自己偶然发现了解决方案。代码如下,因此NA的{​​{1}}更改为0,并且仍然可以作为计算的一部分,其结果显示在最后三列中:

freq.x

1 个答案:

答案 0 :(得分:0)

我遇到了同样的错误,并找到了另一个解决方案。

代替:

bframe[is.na(bframe)] <- 0

尝试在 is.na 函数后添加逗号:

bframe[is.na(bframe), ] <- 0

这对我来说非常有效!