如何在同一函数中传递变量名(即var_x)或变量的变换(即作为因子(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?

查看:3
本文介绍了如何在同一函数中传递变量名(即var_x)或变量的变换(即作为因子(Var_X))?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在gggraph中,我们可以很容易地在代码中放入数据帧的变量名,即

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)返回numeric,另一方面,my_fun(df, as.factor(a))必须返回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

这篇关于如何在同一函数中传递变量名(即var_x)或变量的变换(即作为因子(Var_X))?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆