![](/img/trans.png)
[英]R: Why does data.frame only give me nice column names if I use the = operator?
[英]Why doesn't R throw an error when I use only the initial part of my column name in a data frame?
我有一个包含各种列以及sender_bank_flag
的数据框。 我在我的数据框上运行了以下两个查询。
sum(s_50k_sample$sender_bank_flag, na.rm=TRUE)
sum(s_50k_sample$sender_bank, na.rm=TRUE)
即使在我的数据框中没有像sender_bank
这样的列,我从两个查询中获得了相同的输出。 我希望第二个代码出错。 不知道R有这样的功能! 有谁知道这个功能究竟是什么?如何更好地利用它?
可能值得将所有评论扩充到答案中。
我的评论和BenBolker都指向doc页面?Extract
:
在递归(类似列表)对象下:
"[["
和"$"
选择列表中的单个元素。 主要区别在于"$"
不允许计算索引,而"[["
确实如此 。x$name
相当于x[["name", exact = FALSE]]
。 此外,"[["
的部分匹配行为可以使用exact
参数来控制。
在字符索引下:
在某些情况下,字符索引可以部分匹配(参见
?pmatch
)与被子集化的对象的名称或名称(但从不用于子分配)。 与S(Becker 等人,第358页)不同,R在通过"["
提取时从不使用部分匹配,并且"[["
默认情况下不使用部分匹配(参见参数exact
)。因此,默认行为是仅在通过
"$"
从递归对象 (环境除外)中提取时使用部分匹配。 即使在这种情况下,也可以通过options(warnPartialMatchDollar = TRUE)
打开警告。
请注意,手册中包含丰富的信息,请确保您完全消化它们。 我格式化了内容,在相关的位置添加了Stack Overflow线程。
由phiver的评论提供的链接值得长期阅读。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.