如何访问列表中的功能?

时间:2017-08-17 05:37:59

标签: r

假设我有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

1 个答案:

答案 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