`[`?的第一个参数的名称是什么?

时间:2017-09-06 08:02:26

标签: r extract

letter[2]相当于'['(letters,i=2),第二个参数是i

第一个参数的名称是什么,所以后面的两个表达式是等价的?

lapply(1:3,function(x){letters[x]})
lapply(1:3,`[`,param1 = letters) # param1 to be replaced with solution

3 个答案:

答案 0 :(得分:5)

为了能够定义与上面类似的函数,您必须将两个参数传递给函数。函数[确实采用了各种输入。我们可以使用Map代替lapply来提供数据从中提取的位置和指数,以指示数据的一部分提取:

  Map("[",list(letters),1:3)
 [[1]]
 [1] "a"

 [[2]]
 [1] "b"

 [[3]]
 [1] "c"

这与您的上述内容类似。希望这有帮助

答案 1 :(得分:3)

必须可能比"["更具体,例如:

lapply(1:3, `[.numeric_version`, x = letters)

# [[1]]
# [1] "a"
# 
# [[2]]
# [1] "b"
# 
# [[3]]
# [1] "c"

(不确定[.numeric_version是否最合适,但......我正在挖掘更多内容)

答案 2 :(得分:1)

var array = [['TEST1'], ['TEST2'], ['TEST3'], ['TEST4'], ['TEST5']] [].concat.apply([], array); rlang::as_closure,都基于purrr::as_mapper(参见doc)  将rlang::as_function转换为具有命名参数的函数:

[