如果我在data.frame
中选择一个不存在的列,则R只返回NULL
或NA
s。
> df <- data.frame(foo=1:3,bar=4:6)
> df$fooo # note typo
NULL
> df["fooo",] # note typo
foo bar
NA NA NA
有时候,这会导致很难发现的错误,因为R总是试图用结果做一些聪明的事情。我希望如果它在我尝试提取不存在的列时发出错误信号,是否有办法执行此操作?
答案 0 :(得分:0)
R并没有尝试用结果做任何巧妙的事情 - 你只是通过混合行和列提取顺序来问它是错误的问题。
这是你的第二个例子,但是做得正确。请注意错误:
df <- data.frame(foo=1:3, bar=4:6)
df[, "fooo"]
# Error in `[.data.frame`(df, , "fooo") : undefined columns selected
关于使用$
表示法,因为你说的是bug,我希望你写的是某种脚本,在这种情况下[
提取通常更可靠因为您可以更好地控制部分名称匹配等内容。不过,如果你想抛出一个错误,你可以利用这个事实,如果找不到它,它将返回NULL
。