我注意到了这个意外的功能:
foo <- list(whatever=1:10)
现在,以下内容也适用:
foo$wha
foo$w
foo$whateve
但是,以下内容不是:
foo[["wha"]]
这会带来意想不到的结果(对我来说是意外的),如果您有两个可能的名称,例如“CXCL1”和“CXCL11”,并且您想通过检查
!is.null(foo$CXCL1)
来了解CXCL1是否不为null,即使CXCL1为空,但CXCL11不是。我的问题是:
foo$whatever
和foo[["whatever"]]
有什么区别? 最佳答案
> l <- list(score=1, scotch=2)
> l$core #only INITIAL subsequences
NULL
> l$sco #only UNIQUE subsequences
NULL
> l$scor
[1] 1
[[
和$
都选择列表中的单个元素。主要区别在于$
不允许计算索引,而[[
允许,并且默认情况下允许部分匹配与oper $
一起使用,但不允许与[[
一起使用。 在您的示例中,如果
CXCL1
和CXCL11
共存并且您为foo$CXCL1
编制索引,则这不是部分匹配,应该返回CXCL1
的值。如果没有,也许还有另一个问题。我应该指出,
[[
不允许部分匹配,因为默认情况是从R 2.7.0
版本开始。