letter[2]
相当于'['(letters,i=2)
,第二个参数是i
。
第一个参数的名称是什么,所以后面的两个表达式是等价的?
lapply(1:3,function(x){letters[x]})
lapply(1:3,`[`,param1 = letters) # param1 to be replaced with solution
答案 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
转换为具有命名参数的函数:
[