The function im trying to write
f <- function(x, variable.name, n) {
order <- x[order(x$variable.name, decreasing = TRUE), ]
head(order, n = n)
}
should return largest n values of variable.name from dataset x. But when running the function:
f(x=iris, variable.name="Sepal.Length", n = 5)
R returns the following error message:
Error in order(df$var.name, decreasing = TRUE) :
argument 1 is not a vector
Can someone help me understand what is wrong with the function? The input of the function works as intended when not inside the function.
CodePudding user response:
The problem is that you are trying to call x$variable.name
where variable.name
is a character string that you defined. I think it's not how $
work. Use [[
instead:
f <- function(x, variable.name, n) {
order <- x[order(x[[variable.name]], decreasing = TRUE), ]
head(order, n = n)
}
Output
f(x=iris, variable.name="Sepal.Length", n = 5)
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
132 7.9 3.8 6.4 2.0 virginica
118 7.7 3.8 6.7 2.2 virginica
119 7.7 2.6 6.9 2.3 virginica
123 7.7 2.8 6.7 2.0 virginica
136 7.7 3.0 6.1 2.3 virginica