如何从r中返回列表的函数返回一个元素?

时间:2017-07-04 17:48:46

标签: r

我建立了自己的功能:

library(VineCopula)

Matrix <- c(5, 2, 3, 1, 4,
            0, 2, 3, 4, 1,
            0, 0, 3, 4, 1,
            0, 0, 0, 4, 1,
            0, 0, 0, 0, 1)
Matrix <- matrix(Matrix, 5, 5)
family <-par <- par2 <-  list()
for(i in 1:3){
# define R-vine pair-copula family matrix
family[[i]] <- c(0, 1, 3, 4, 4,
            0, 0, 3, 4, 1,
            0, 0, 0, 4, 1,
            0, 0, 0, 0, 3,
            0, 0, 0, 0, 0)
family[[i]] <- matrix(family[[i]], 5, 5)
# define R-vine pair-copula parameter matrix
par[[i]] <- c(0, 0.2, 0.9, 1.5, 3.9,
         0, 0, 1.1, 1.6, 0.9,
         0, 0, 0, 1.9, 0.5,
         0, 0, 0, 0, 4.8,
         0, 0, 0, 0, 0)
par[[i]] <- matrix(par[[i]], 5, 5)
# define second R-vine pair-copula parameter matrix
par2[[i]] <- matrix(0, 5, 5)
}
my_func <- function(Matrix, family, par, par2){
     x <- list()
     for(i in 1:3){
          x[[i]] <- RVineMatrix(Matrix = Matrix,family=family[[i]],par=par[[i]],par2 = par2[[i]])
     }
     x
}

这将返回一个列表。然后我如何从我的函数中提取特定元素。例如,我如何获得my_func$Matrixmy_func$par[1] 注意:family <– par <– par2 <– list()。我还尝试return(x[i]$family[i])并返回NULL

运行该功能:

y <- my_func(Matrix = Matrix,family = family,par = par,par2 = par2)

> y$Matrix
NULL

2 个答案:

答案 0 :(得分:2)

您的函数的返回值是类list的{​​{1}},其中包含名为RVineMatrix的元素。请参阅帮助页面Matrix?RVineMatrix部分。所以你需要Value

y[[1]]$Matrix

答案 1 :(得分:1)

您需要将该功能的结果分配给某事物。例如:

y <- my_func(Matrix = ... , family = ..., par = ..., par2 = ...)

上面的...是你的参数的值。根据您的my_func定义,最终结果是一个未命名的列表,以便访问您使用的元素:

y[[1]]
y[[2]]
y[[3]]

或仅y访问所有元素。