Reputation: 135
I am trying to extract an element from a list within a 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. Why is this happening?
Upvotes: 1
Views: 40
Reputation: 102625
The answer by @akrun is excellent. Here is a complementary one.
We can use eval
+ substitute
to replace my.list$v2
in your code, i.e.,
eval(substitute(v2), my.list)
Upvotes: 0
Reputation: 887851
The $
would try to look for a list
name v2
. Instead, convert the unquoted input to string with substitute/deparse
and use [[
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
Upvotes: 1