【问题标题】:R function error for RHS replacement of missing valuesRHS替换缺失值的R函数错误
【发布时间】:2014-01-20 11:51:26
【问题描述】:

第一个谜团是为什么 csv 文件中包含空单元格的字符向量不包含 NA。相反,它们显示为“”。试过例如read.csv(file, na.strings = ""),但是失败了。

无论如何,问题是为什么这个函数会返回错误,而它在函数之外工作。

clean.data <- function(dta, col) {
  dta$col[dta$col == ""]  <- NA # set empty cells to missing
} 

明显有问题,但我看不到。

Error in `$<-.data.frame`(`*tmp*`, "col", value = logical(0)) : 
  replacement has 0 rows, data has 20692 

【问题讨论】:

  • 使用dta[dta[, col] == "", col] &lt;- NA
  • 啊,为什么?顺便说一句,它有效。
  • 因为$ 不适合这样的编程使用。您不能将字符传递给它以进行列选择。
  • @Roland 我可以问一下这是否也适用于函数?尝试使用 replace.empty &lt;- function(dta, col) { dta[dta[, col] == "", col] &lt;- NA } 但无法正常工作。
  • 你的函数需要返回一些东西。试试function(dta, col) { dta[dta[, col] == "", col] &lt;- NA; dta }

标签: r function missing-data


【解决方案1】:

回答您的第一个问题:''NA 不同。后者在R中有具体含义;它是一种特殊类型的未定义虚无。示例:

> 'foo'==''
[1] FALSE
> 'foo'==NA
[1] NA

您可以对'' 执行逻辑和其他操作,但几乎所有涉及NA 的操作都会根据设计返回NA

【讨论】:

    猜你喜欢
    • 2014-05-09
    • 2020-08-10
    • 2011-12-05
    • 1970-01-01
    • 1970-01-01
    • 2020-11-14
    • 1970-01-01
    • 2023-01-13
    • 2021-09-03
    相关资源
    最近更新 更多