【问题标题】:Why is the function work after doing fix() in R为什么在 R 中执行 fix() 后该函数起作用
【发布时间】:2020-06-06 23:28:22
【问题描述】:

发生了什么事:

> NA.of.df = which(rowSums(is.na(df)) == ncol(df))
> NA.of.df 
named integer(0)
> fix(df) # i want to see what's in here -- nothing wrong
> NA.of.df # so i run it again  
1 3 5 7 9 # it works!

为什么会这样??

一个可生产的例子(但似乎不是任何带有dput() 的数据结构)如下所示:

> dput(NA.of.df)
structure(integer(0), .Names = character(0))

NA.of.df 只是查找具有所有 NA 的行的代码(从这里获得: Remove rows in R matrix where all data is NA)。 (即NA.of.df = which(rowSums(is.na(df)) == ncol(df))

【问题讨论】:

  • 这里df是什么
  • @akrun df 是 >10,000 行 df,我看看能不能做个玩具数据;但是,你知道为什么会这样吗?
  • 我无法使用NA.of.df <- which(rowSums(is.na(head(mtcars))) == ncol(mtcars))复制
  • 您可以尝试新的 R 会话吗?可能是一些 NA 在它周围有引号,在 fix 之后,它可能已经评估以删除这些引号?
  • @akrun 噢噢噢!!!就是这样!谢谢!您想将此作为答案提交吗?

标签: r


【解决方案1】:

NA 周围的引号可能是一个问题,导致 is.na 无法提取这些元素

is.na(c(NA, "NA"))
#[1]  TRUE FALSE

在执行fix 之后,它可能已删除引号并正确评估它

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-25
    • 2020-05-10
    • 1970-01-01
    • 2017-08-12
    • 1970-01-01
    • 2021-07-01
    • 1970-01-01
    相关资源
    最近更新 更多