使用';[';方括号作为R中Lappy的函数
我已经看到了R中使用的函数使用';[';方括号作为R中Lappy的函数,r,R,我已经看到了R中使用的函数lappy,用于从矩阵列表中存在的矩阵中提取元素 例如,我有一个3(2x2)个矩阵的列表,我想从这3个矩阵中提取元素[1,2] 代码:list1=lapply(mylist,[',1,2)工作正常。它返回一个包含这3个元素的列表 我正试图研究这到底在做什么。谷歌没有帮助,在R帮助中使用?“['也不太容易解释。我不知道”['在R中是一个函数,所以代码不是直观的。R中的运算符只是函数 这些是等效的: > x <- list(a=1,b=2) > x[1]
lappy
,用于从矩阵列表中存在的矩阵中提取元素
例如,我有一个3(2x2)个矩阵的列表,我想从这3个矩阵中提取元素[1,2]
代码:list1=lapply(mylist,[',1,2)
工作正常。它返回一个包含这3个元素的列表
我正试图研究这到底在做什么。谷歌没有帮助,在R帮助中使用
?“['
也不太容易解释。我不知道”['
在R中是一个函数,所以代码不是直观的。R中的运算符只是函数
这些是等效的:
> x <- list(a=1,b=2)
> x[1]
$a
[1] 1
> `[`(x,1)
$a
[1] 1
+
、=
等运算符以及其他运算符都以这种方式工作。方括号实际上是一个函数,其第一个参数是要子集的对象。后续参数是该子集的索引
# For example, if M is a matrix
M[1, 2] # extracts the element at row 1, col 2
# is the same as
`[`(M, 1, 2)
# Try them!
现在,看看lappy
的参数:
args(lapply)
# function (X, FUN, ...)
这些点中表示的所有内容都作为参数传递给函数FUN
因此,当
FUN=“[”
时,“[”
的第一个参数是列表的当前元素(正在迭代),即被子集的对象[绝对是一个函数。也有赋值函数(例如:[R中的所有东西都是一个对象……如果它做了什么,那么对象的类型就是函数。很好的解释-举一个“其他操作符”的例子,”/“(1,2)
和1/2
和do.call(“/”,list(1,2))
所有函数都给出相同的结果。关于带星号的函数,请参见@thelatemail In base,有Reduce('/',list(1,2))
,Map('/',1,2)
和所有*应用的
函数,也可以将函数作为参数,甚至更多(?)。。。
args(lapply)
# function (X, FUN, ...)