【问题标题】:is.na(x)` is a matrix, it must have the same dimensions as the input-error in Ris.na(x)` 是一个矩阵,它必须与 R 中的输入误差具有相同的维度
【发布时间】: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 &lt;- matrix(c(1:10, NA, NA), 2, 6); x[is.na(x)] &lt;- 0
  • str(x) 的输出是什么?
  • 是的,我也不是,就像我在问题中所说的那样。 @janderkran
  • 你所拥有的显然不是标准的data.frame。

标签: r matrix na


【解决方案1】:

如果 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

【讨论】:

    猜你喜欢
    • 2014-04-19
    • 1970-01-01
    • 1970-01-01
    • 2021-06-05
    • 1970-01-01
    • 2017-10-23
    • 1970-01-01
    • 1970-01-01
    • 2021-05-25
    相关资源
    最近更新 更多