我正在尝试从函数内的列表中提取一个元素。
```{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。为什么会发生这种情况?
答案 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)