I am trying to subset a dataframe with the following function.
SubsetDF <- function(DF, VAR, YEAR){
DF2 <- DF[DF$VAR <= YEAR, ]
return(DF2)
}
test <- SubsetDF(myData, "YEAR", 2000)
The resulting "test" is empty. What am I missing here?
By the way, if I just do below, then the resulting dataframe is fine.
myData[myData$YEAR <= 2010,]
Try
SubsetDF <- function(DF, VAR, YEAR){
DF2 <- DF[DF[VAR] <= YEAR, ]
return(DF2)
}
test <- SubsetDF(myData, "YEAR", 2000)
Just replace the DF$VAR
part with DF[VAR]
An approach using non-standard evaluation
d <- data.frame(YEAR = 1996:2005, x = 1:10)
test <- function(df, name, year){
df[eval(substitute(name), df) <= year, ]
}
test(d, YEAR, 2000)
Notice that the year variable is not passed as a character (this is what is meant by non-standard evaluation). For more on non-standard evaluation read this http://adv-r.had.co.nz/Computing-on-the-language.html