R 中的输入变量名称处理
Input variable name handling in R
我想了解如何在函数中处理变量名的输入。例如,我写了这样一个函数:
bin_multi <- function(y, dataframe, sel = NULL){
if(!is.null(sel)) {
dataframe <- dataframe[,sel]}
else {
dataframe <- dataframe[!y]}
}
其中dataframe
是输入数据帧,y
是数据帧中的目标变量,sel
是从dataframe
中选择的列,例如,sel = c(1,2,3)
。
这个函数的目的是简单的取dataframe
的一个子集给定sel
,当sel
没有给定的时候,排除y
目标来自 dataframe
.
的变量
我的问题是,如何在这个函数中正确引用 y
?在输入中,y
是一个变量的名称。 deparse()
可以解决这个问题吗?
谢谢大家
我认为这会起作用:
bin_multi <- function(y, dataframe, sel = NULL){
if(!is.null(sel)) {
dataframe <- dataframe[,sel]
} else {
dataframe <- dataframe[,which(names(dataframe) != deparse(substitute(y)))]
}
}
这是利用 this answer 将您的对象名称转换为字符串。
我想了解如何在函数中处理变量名的输入。例如,我写了这样一个函数:
bin_multi <- function(y, dataframe, sel = NULL){
if(!is.null(sel)) {
dataframe <- dataframe[,sel]}
else {
dataframe <- dataframe[!y]}
}
其中dataframe
是输入数据帧,y
是数据帧中的目标变量,sel
是从dataframe
中选择的列,例如,sel = c(1,2,3)
。
这个函数的目的是简单的取dataframe
的一个子集给定sel
,当sel
没有给定的时候,排除y
目标来自 dataframe
.
我的问题是,如何在这个函数中正确引用 y
?在输入中,y
是一个变量的名称。 deparse()
可以解决这个问题吗?
谢谢大家
我认为这会起作用:
bin_multi <- function(y, dataframe, sel = NULL){
if(!is.null(sel)) {
dataframe <- dataframe[,sel]
} else {
dataframe <- dataframe[,which(names(dataframe) != deparse(substitute(y)))]
}
}
这是利用 this answer 将您的对象名称转换为字符串。