假设我有list
如下:
mylist<-list( c(12,3,12,5),"Hello R",sin )
所以,mylist
的第三元素是 sin(x)函数:
mylist[3]
[[1]]
function (x) .Primitive("sin")
如果我想将元素传递给它,该怎么办?
例如,我想获得sin(90)
我试过了mylist[3](90)
:
mylist[3](90)
Error: attempt to apply non-function
答案 0 :(得分:4)
你非常亲密。请注意,当您在所需输出旁边输入mylist[3]
时,您还会获得[[1]]
。这意味着这是一个包含元素1的列表。如果你这样做,你可以看到这个。
> str(mylist[3])
List of 1
$ :function (x)
要对列表的元素(而不仅仅是第三个列表元素)进行子集化,您应该使用双括号。
> mylist[[3]](90)
[1] 0.8939967
Here is a nice representation如何处理R中的列表。
或者,您可以为元素命名并以这种方式访问它们。
> mylist <- list(a = c(12,3,12,5), b = "Hello R", allmysins = sin)
> mylist$allmysins(90)
[1] 0.8939967