如何从函数内的列表中提取元素

时间:2021-04-10 20:32:47

标签: r

我正在尝试从函数内的列表中提取一个元素。

```{r}
Q7.4<-function (v1,v2){
  mean<-mean(v1)
  median<-median(v1)
  variance<-var(v1)
  minimum<-min(v1)
  maximum<-max(v1)
  Coefficientofvariation<-sqrt(variance)/mean
  my.list<<-list(mean=mean,meadian=median,variance=variance,minimum=minimum,maximum=maximum,Coefficientofvariation=Coefficientofvariation)
  my.list$v2
}

当我运行代码时

Q7.4(1:100,mean)

我得到 NULL。为什么会发生这种情况?

2 个答案:

答案 0 :(得分:2)

$ 会尝试查找 list 名称 v2。相反,使用 substitute/deparse 将不带引号的输入转换为字符串并使用 [[

Q7.4<-function (v1,v2){
     mean <- mean(v1)
     median <- median(v1)
     variance <- var(v1)
     minimum <- min(v1)
     maximum <- max(v1)
     Coefficientofvariation <- sqrt(variance)/mean
     my.list <- list(mean = mean,
                    median = median,
                    variance = variance,
                    minimum = minimum,
                    maximum = maximum,
                    Coefficientofvariation = Coefficientofvariation)
     my.list[[deparse(substitute(v2))]]
   }

-测试

Q7.4(1:100, mean)
#[1] 50.5

答案 1 :(得分:1)

@akrun 的回答非常好。这是一个补充。

我们可以使用 eval + substitute 替换代码中的 my.list$v2,即

eval(substitute(v2), my.list)