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

R 如何从函数中的列表中提取元素,r,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

我试图从函数中的列表中提取元素

```{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
}

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

$
将尝试查找
列表
名称
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))]]
   }

$
将尝试查找
列表
名称
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))]]
   }

@akrun的答案非常好。这里有一个补充答案

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

eval(substitute(v2), my.list)

@akrun的答案非常好。这里有一个补充答案

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

eval(substitute(v2), my.list)

谢谢,这很有道理。你能解释一下德帕斯和替补在做什么吗?很好的回答!每天都从你身上学到很多东西!投赞成票!谢谢,这很有道理。你能解释一下德帕斯和替补在做什么吗?很好的回答!每天都从你身上学到很多东西!投赞成票!这是一个很好的方式。这是一个很好的方式。