0

如果我在 a 中选择一个不存在的列data.frame,R 只会返回NULLNAs。

> df <- data.frame(foo=1:3,bar=4:6)
> df$fooo # note typo
NULL
> df["fooo",] # note typo
    foo bar
NA  NA  NA

有时,这会导致难以发现的错误,因为 R 总是试图对结果做一些聪明的事情。我希望它在我尝试提取不存在的列时发出错误信号,有没有办法做到这一点?

4

1 回答 1

0

R 并没有试图对结果做任何聪明的事情——你只是通过混合行和列的提取顺序来问它错误的问题。

这是您的第二个示例,但做得正确。注意错误:

df <- data.frame(foo=1:3, bar=4:6)

df[, "fooo"]
# Error in `[.data.frame`(df, , "fooo") : undefined columns selected

关于使用$表示法,既然您说的是错误,我希望您正在编写某种脚本,在这种情况下[提取通常更可靠,因为您可以更好地控制诸如部分名称匹配之类的事情. 不过,如果您希望能够抛出错误,您可以利用NULL如果找不到该值它将返回的事实。

于 2014-07-10T18:50:25.677 回答