问题描述
我尝试过
x[is.na(x)] <- 0
将NA
替换为0。但是会发生上述错误。 x
是data.frame。抱歉,我无法重新创建错误。一般我该怎么办?
Error in `[<-.data.frame`(`*tmP*`,is.na(x),value = 0) : unsupported matrix index in replacement
3.
stop("unsupported matrix index in replacement")
2.
`[<-.data.frame`(`*tmP*`,value = 0)
1.
`[<-`(`*tmP*`,value = 0)
编辑
x
也是list
str(x)
data.frame': 21448 obs. of 4 variables:
$ item : chr "v" "v" "a" "a" ...
$ E : num 126.4 126.4 51.7 51.7 51.7 ...
$ E: num 419 417.6 49 49.3 49 ...
$ c : num [1:21448,1:3] 331.4 330.3 94.8 95.4 94.8 ...
..- attr(*,"dimnames")=List of 2
.. ..$ : NULL
.. ..$ : chr [1:3] "item" "E" "E"
- attr(*,"problems")= tibble [5,624 x 5] (S3: tbl_df/tbl/data.frame)
..$ row : int [1:5624] 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 ...
..$ col : chr [1:5624] "Sex" "Sex" "Sex" "Sex" ...
..$ expected: chr [1:5624] "1/0/T/F/TRUE/FALSE" "1/0/T/F/TRUE/FALSE" "1/0/T/F/TRUE/FALSE" "1/0/T/F/TRUE/FALSE" ...
..$ actual : chr [1:5624] "m" "m" "m" "m" ...
..$ file : chr [1:5624] "'../data/tables/k.tsv'" "'../data/tables/k.tsv'" "'../data/tables/k_13_08.tsv'" "'../data/tables/k.13_08.tsv'" ...
- attr(*,"spec")=List of 3
..$ cols :List of 26
.. ..$ diet_item_id : list()
.. .. ..- attr(*,"class")= chr [1:2] "collector_character" "collector"
.. ..$ file_name : list()
.. .. ..- attr(*,"class")= chr [1:2] "collector_character" "collector"
.. ..$ sample : list()
.. .. ..- attr(*,"class")= chr [1:2] "collector_character" "collector"
.. ..$ time_point.label : list()
.. .. ..- attr(*,"class")= chr [1:2] "collector_character" "collector"
.. ..$ time_point : list()
.. .. ..- attr(*,"class")= chr [1:2] "collector_character" "collector"
.. ..$ day : list()
.. .. ..- attr(*,"class")= chr [1:2] "collector_double" "collector"
.. ..$ date :List of 1
.. .. ..$ format: chr ""
.. .. ..- attr(*,"class")= chr [1:2] "collector_date" "collector"
.. ..$ St_complet : list()
.. .. ..- attr(*,"class")= chr [1:2] "collector_character" "collector"
.. ..$ Time : list()
.. .. ..- attr(*,"class")= chr [1:2] "collector_character" "collector"
.. ..$ Sex : list()
.. .. ..- attr(*,"class")= chr [1:2] "collector_logical" "collector"
.. ..$ P : list()
.. .. ..- attr(*,"class")= chr [1:2] "collector_character" "collector"
.. ..$ item : list()
.. .. ..- attr(*,"class")= chr [1:2] "collector_character" "collector"
.. ..$ item_id : list()
.. .. ..- attr(*,"class")= chr [1:2] "collector_character" "collector"
.. ..$ cat : list()
.. .. ..- attr(*,"class")= chr [1:2] "collector_character" "collector"
.. ..$ subcat : list()
.. .. ..- attr(*,"class")= chr [1:2] "collector_character" "collector"
.. ..$ descr : list()
.. .. ..- attr(*,"class")= chr [1:2] "collector_character" "collector"
.. ..$ E : list()
.. .. ..- attr(*,"class")= chr [1:2] "collector_double" "collector"
.. ..$ database : list()
.. .. ..- attr(*,"class")= chr [1:2] "collector_character" "collector"
.. ..$ E : list()
.. .. ..- attr(*,"class")= chr [1:2] "collector_double" "collector"
.. ..$ K : list()
.. .. ..- attr(*,"class")= chr [1:2] "collector_double" "collector"
.. ..$ F : list()
.. .. ..- attr(*,"class")= chr [1:2] "collector_double" "collector"
.. ..$ B : list()
.. .. ..- attr(*,"class")= chr [1:2] "collector_double" "collector"
.. ..$ G : list()
.. .. ..- attr(*,"class")= chr [1:2] "collector_double" "collector"
.. ..$ E: list()
.. .. ..- attr(*,"class")= chr [1:2] "collector_double" "collector"
.. ..$ A : list()
.. .. ..- attr(*,"class")= chr [1:2] "collector_double" "collector"
.. ..$ E : list()
.. .. ..- attr(*,"class")= chr [1:2] "collector_double" "collector"
..$ default: list()
.. ..- attr(*,"class")= chr [1:2] "collector_guess" "collector"
..$ skip : num 1
..- attr(*,"class")= chr "col_spec"
解决方法
如果x是一个data.frame对象,它应该可以工作:
df <- data.frame(a = c(1,2,3),b = c(4,NA,6),c = c(NA,8,NA))
df[is.na(df)] <- 0
> df
a b c
1 1 4 0
2 2 0 8
3 3 6 0