如何使用`[[`和`$`作为函数?

时间:2013-09-12 10:59:07

标签: r

我知道我可以这样做:

x <- list(a=1, b=1)
y <- list(a=1)
JSON <- rep(list(x,y),10000)
sapply(JSON, "[[", "a")

然而,我以同样的方式使用$挣扎

sapply(JSON, "$", "a")
sapply(JSON, "$", a)

此外,是否可以将运算符用作其他语言的函数?

e.g。 a + b相当于(+)(a, b)

1 个答案:

答案 0 :(得分:7)

您可以,只需要使用$的匿名函数。我会猜测这与$的参数为never evaluated的事实有关......

sapply(JSON, function(x) `$`( x , "a" ) )

回答你的第二个问题......是的,所有二进制算术运算符都可以使用反向标记来指定,就像这样......

a <- 2 
b <- 3

# a + b
`+`( a , b )
[1] 5
# a ^ b
`^`( a , b )
[1] 8
# a - b
`-`( a , b )
[1] -1