【发布时间】:2020-12-07 16:13:18
【问题描述】:
我试过了
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*`, is.na(x), value = 0)
1.
`[<-`(`*tmp*`, is.na(x), 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"
【问题讨论】:
-
你能提供一个reprex吗?使用模拟数据创建矩阵时,我无法重现您的错误:
x <- matrix(c(1:10, NA, NA), 2, 6); x[is.na(x)] <- 0 -
str(x)的输出是什么? -
是的,我也不是,就像我在问题中所说的那样。 @janderkran
-
你所拥有的显然不是标准的data.frame。