Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 反码功能,处理引号_R_Nse - Fatal编程技术网

R 反码功能,处理引号

R 反码功能,处理引号,r,nse,R,Nse,我正在寻找一些帮助来定义一个函数来反转顺序变量的代码。我使用的调查数据中,理论上相关的变量在不同的方向上编码,也就是说,对一个概念的感知是用几个不同的变量来衡量的,其中一些变量表示较高的值为“正”,另一些变量表示较低的值为“正”。我已经编写了一个函数,允许我对所选变量进行反向编码,以便它们的编码一致: reverse_code <- function(x, df){ df[x] <- df[x] * -1 + max(df[x], na.rm = TRUE) + 1 retu

我正在寻找一些帮助来定义一个函数来反转顺序变量的代码。我使用的调查数据中,理论上相关的变量在不同的方向上编码,也就是说,对一个概念的感知是用几个不同的变量来衡量的,其中一些变量表示较高的值为“正”,另一些变量表示较低的值为“正”。我已经编写了一个函数,允许我对所选变量进行反向编码,以便它们的编码一致:

reverse_code <- function(x, df){
  df[x] <- df[x] * -1 + max(df[x], na.rm = TRUE) + 1
  return(df)
}

# call the function - note that var names need to be quoted, but not the dataframe
data <- reverse_code(c("var1", "var2", "var3", "var4"), data)
或者像这样:

reverse_code(var1, data)
reverse_code("var1", data)

您可以使用
match.call执行类似操作:

foo <- function(x, df) {

  thecall <- match.call()

  if (is.symbol(thecall[["x"]])) return(paste0("NSE: ", as.character(thecall[["x"]])))
    else
  return(paste0("SE: ", x))  
}

foo(x)
#[1] "NSE: x"
foo("x")
#[1] "SE: x"

我不明白这个问题。在R中,字符串是用引号表示的,而符号(当然)不是。我不明白你为什么要传递符号向量而不是字符。请更详细地解释并说明如何使用非标准求值调用函数。无论如何,这是个坏主意,你应该重新考虑。对,我不清楚。我也希望能够像这样调用函数:如果您认为这不是最好的方法,我很感激反向_代码(var1,data),但是这种类型的重新编码是我经常使用的数据。如果你有更好的方法,我很乐意听。好吧,那么你想使用非标准求值当且仅当
x
是长度1?并且你永远不想以编程方式将某些东西传递给
x
?太棒了,谢谢。我使用了第二个选项,效果很好。我会记住你的怀疑,读更多关于NSE的文章。就像@zx8754所说的,这类似于dplyr函数,所以我从未想过这可能是需要避免的。
foo <- function(x, df) {

  thecall <- match.call()

  x <- as.character(thecall[["x"]])

  x
}