【发布时间】:2015-10-28 10:38:01
【问题描述】:
我不经常使用按行名索引 data.frame,但有时这样做是有好处的。但是,当我尝试过滤不令人兴奋的行时,我注意到了意外的结果
test <- data.frame(a = c("a", "b", "c"),
b = c("A", "B", "C"),
row.names = c(-99.5, 99.5, 99))
test["-99", ]
你会期望它会给你
a b
NA <NA> <NA>
但它会返回
a b
-99.5 a A
具体一点
Session info ---------------------------------------------------------------
setting value
version R version 3.2.1 (2015-06-18)
system x86_64, mingw32
ui RStudio (0.99.441)
language (EN)
collate English_United Kingdom.1252
tz Europe/London
有什么想法吗?
【问题讨论】:
-
可能在调用函数时已经使用了一些模糊匹配机制。
-
什么意思?这里没有功能。空环境中的此错误。
-
这是一个很好的例子,说明为什么您应该始终使用逻辑条件进行子集/索引。 TRUE 或 FALSE 比命名引用更加可靠和直观。此外,往往更容易调试。
-
我完全同意并且我同意,但是对于这种情况,我需要保持测试 data.frame 的顺序。当您按逻辑条件索引时,排序将取决于索引向量,而不是原始表。无论如何,会想办法解决它。