这让我非常糟糕。你可以缩写列表名称吗?我之前从未注意到它,而且我完全搞砸了一天。有人可以解释这里发生了什么,为什么它可能比它可怕更有用?为什么它与底部的不一致?如果我可以关掉它?
> wtf <- list(whatisthe=1, pointofthis=2)
> wtf$whatisthe
[1] 1
> wtf$what
[1] 1
> wtf <- list(whatisthe=1, whatisthepointofthis=2)
> wtf$whatisthepointofthis
[1] 2
> wtf$whatisthep
[1] 2
> wtf$whatisthe
[1] 1
> wtf$what
NULL
答案 0 :(得分:16)
我怀疑$
运算符的部分匹配是一个很好的(r)功能,可以在实现选项卡式完成之前的几天内进行交互式使用
如果您不喜欢这种行为,可以改用"[["
运算符。
它需要一个参数exact=
,它允许您控制部分匹配行为,默认为TRUE
。
wtf[["whatisthep"]] # Only returns exact matches
# NULL
wtf[["whatisthep", exact=FALSE]] # Returns partial matches without warning
# [1] 2
wtf[["whatisthep", exact=NA]] # Returns partial matches & warns that it did
# [1] 2
# Warning message:
# In wtf[["whatisthep", exact = NA]] :
# partial match of 'whatisthep' to 'whatisthepointofthis'
(这是R编程中"[["
通常优先于$
的一个原因。另一个原因是X <- "whatisthe"; wtf[[X]]
但X <- "whatisthe"; wtf$X
而不是{{1}}。< / p>
答案 1 :(得分:2)
对于列表元素名称(和函数参数名称),R应用以下算法:
如果项目完全匹配,请使用它。如果没有完全匹配,请查找部分匹配。如果只有一个部分匹配,请使用它。否则,什么都不用。