繁体   English   中英

当我在数据框中仅使用列名的初始部分时,为什么R不会抛出错误?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM