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

What's the name of the first argument of `[`?

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

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

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

为了能够定义类似于上述函数的函数,您必须向函数传递两个参数。函数 [ 确实需要各种输入。我们可以使用 Map 而不是 lapply 来为它提供从中提取的 data 和指示的 Indices需要提取的部分数据:

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

 [[2]]
 [1] "b"

 [[3]]
 [1] "c"

这与您上面的类似。希望这有帮助

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

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

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

(不确定 [.numeric_version 是否最合适,不过...我正在深入挖掘)

rlang::as_closurepurrr::as_mapper ,都基于 rlang::as_function (见文档) 都会将 [ 转换为具有命名参数的函数:

lapply(1:3, purrr::as_mapper(`[`), .x = letters)
lapply(1:3, rlang::as_closure(`[`), .x = letters)
# [[1]]
# [1] "a"
# 
# [[2]]
# [1] "b"
# 
# [[3]]
# [1] "c"