重新编码数据框中的一组列

Recode a set of columns in a data frame

我在数据框中有一组列,我想按以下方式重新编码(这里是一个带有一个变量的示例):

completed_survey$little_control<-car:: recode(completed_survey$little_control, 
"1=7;2=6;3=4;4=4;5=3;6=2;7=1")

为了提高效率并且不为所有不同的变量重复相同的代码,我正在考虑使用一个函数并且我在想这样的事情:

recoding <- function(x) { 
car :: recode(completed_survey$., "1=7;2=6;3=4;4=4;5=3;6=2;7=1")
} 

但是,一旦应用于数据框中的变量,就会导致以下错误:

Error in `$<-.data.frame`(`*tmp*`, little_control, value = numeric(0)) : 
  replacement has 0 rows, data has 139334

估计是函数规范的问题。如何引用数据框中的任何通用列变量,以便应用重新编码功能?

有几个问题(可能是拼写错误)-1) 不必要的 space,2) 函数内部没有使用函数参数。下面的函数有两个参数——一个用于数据,另一个用于作为字符串的列名

recoding <- function(data, colName) { 
    car::recode(data[[colName]], "1=7;2=6;3=4;4=4;5=3;6=2;7=1")
  } 

recoding(completed_survey, "little_control")

并有一个可重现的例子

recoding(mtcars, "carb")
#[1] 4 4 7 7 6 7 4 6 6 4 4 4 4 4 4 4 4 7 6 7 7 6 6 4 6 7 6 6 4 2 8 6