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

col*_*ang 5 r

我知道我可以这样做:

x <- list(a=1, b=1)
y <- list(a=1)
JSON <- rep(list(x,y),10000)
sapply(JSON, "[[", "a")
Run Code Online (Sandbox Code Playgroud)

但是,我以$同样的方式努力使用

sapply(JSON, "$", "a")
sapply(JSON, "$", a)
Run Code Online (Sandbox Code Playgroud)

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

例如a + b 相当于(+)(a, b)

Sim*_*lon 7

你可以,你只需要使用匿名函数$.我这与事实$从来没有评估的事实有关...

sapply(JSON, function(x) `$`( x , "a" ) )
Run Code Online (Sandbox Code Playgroud)

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

a <- 2 
b <- 3

# a + b
`+`( a , b )
[1] 5
# a ^ b
`^`( a , b )
[1] 8
# a - b
`-`( a , b )
[1] -1
Run Code Online (Sandbox Code Playgroud)

  • @DWin可能并不总是......从"?行情"的底部:*这些标识符也称为句法名称,可以直接在R代码中使用.几乎总是,只要引用它们,就可以使用其他名称.首选引号是反引号(`\``),而`deparse`通常会使用它,但在许多情况下可以使用单引号或双引号(因为字符常量通常会转换为名称).反引号可能必不可少的一个地方是在公式中分隔变量名:参见`formula`.* (3认同)