[英]How to extract an element from a list within a function
I am trying to extract an element from a list within a function.我正在尝试从 function 中的列表中提取一个元素。
```{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
}
When i run the code当我运行代码时
Q7.4(1:100,mean)
I get NULL.我得到 NULL。 Why is this happening?为什么会这样?
The $
would try to look for a list
name v2
. $
将尝试查找list
名称v2
。 Instead, convert the unquoted input to string with substitute/deparse
and use [[
相反,使用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))]]
}
-testing -测试
Q7.4(1:100, mean)
#[1] 50.5
The answer by @akrun is excellent. @akrun 的回答非常好。 Here is a complementary one.这是一个补充。
We can use eval
+ substitute
to replace my.list$v2
in your code, ie,我们可以使用eval
+ substitute
来替换代码中的my.list$v2
,即
eval(substitute(v2), my.list)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.