如何在同一函数中传递变量名(即 var_x)或变量转换(即 as.factor(var_x))?
How to pass on variable names (i.e. var_x) OR transformation of variables (i.e. as.factor(var_x)) in same function?
在 ggplot 中,我们可以轻松地在代码中输入数据帧的变量名,即
df <- data.frame(a=1:10, b= 1:10, c= 1:10)
ggplot(df, aes(a, b, col= c)) + geom_point()
或者我们可以在代码内部转换变量,即在这里我们将颜色变量 c
更改为一个因子:
ggplot(df, aes(a, b, col= as.factor(c))) + geom_point()
我希望我的函数也这样做。所以如果我的函数是
my_fun <- function(data, var){
var <- deparse(substitute(var))
class(data[ , var])
}
我想要 my_fun(df, a)
到 return numeric
,另一方面,my_fun(df, as.factor(a))
必须 return factor
。我们怎样才能做到这一点?
试试这些。
my_fun1 <- function(data, x) eval(substitute(x), data)
my_fun2 <- function(data, ...) with(data, ...)
my_fun3 <- with
例如(其他人也一样)
my_fun1(BOD, Time) # returns numeric object
## [1] 1 2 3 4 5 7
my_fun1(BOD, factor(Time)) # returns factor object
## [1] 1 2 3 4 5 7
## Levels: 1 2 3 4 5 7
在 ggplot 中,我们可以轻松地在代码中输入数据帧的变量名,即
df <- data.frame(a=1:10, b= 1:10, c= 1:10)
ggplot(df, aes(a, b, col= c)) + geom_point()
或者我们可以在代码内部转换变量,即在这里我们将颜色变量 c
更改为一个因子:
ggplot(df, aes(a, b, col= as.factor(c))) + geom_point()
我希望我的函数也这样做。所以如果我的函数是
my_fun <- function(data, var){
var <- deparse(substitute(var))
class(data[ , var])
}
我想要 my_fun(df, a)
到 return numeric
,另一方面,my_fun(df, as.factor(a))
必须 return factor
。我们怎样才能做到这一点?
试试这些。
my_fun1 <- function(data, x) eval(substitute(x), data)
my_fun2 <- function(data, ...) with(data, ...)
my_fun3 <- with
例如(其他人也一样)
my_fun1(BOD, Time) # returns numeric object
## [1] 1 2 3 4 5 7
my_fun1(BOD, factor(Time)) # returns factor object
## [1] 1 2 3 4 5 7
## Levels: 1 2 3 4 5 7