如何使用R将项的向量传递给函数中的单个参数?

时间:2016-12-04 21:06:45

标签: r function vector

如何使用R?

将项目向量传递给函数中的单个参数

我有以下函数来更改数据框中变量的值。

DF:

df <-   read.table(text="   PROD    var1    var2    
                 1  1   0   
                 2  0   0   
                 3  0   0   
                 1  1   0   
                 2  0   0   
                 3  0   0   ", header=T)

功能

Chg.var.df.t <- function(data, prod, vars, numvar, lvl){  
  if(numvar==2 & lvl==1){
    data[data$PROD == prod, vars] <- 1
    data[data$PROD == prod, vars] <- 0}
  if(numvar==2 & lvl == 2){
    data[data$PROD == prod, vars] <- 0
    data[data$PROD == prod, vars] <- 1}
  if(numvar==2 & lvl == 3){
    data[data$PROD == prod, vars] <- -1
    data[data$PROD == prod, vars] <- -1}
  return(data)

}

Chg.var.df.t(df, 1, c("var1", "var2"), 2, 1)

结果

  PROD var1 var2
1    1    0    0
2    2    0    0
3    3    0    0
4    1    0    0
5    2    0    0
6    3    0    0

所以,我猜每个变量都传递给每个data[data$PROD == prod, vars]

我想要的结果是

  PROD var1 var2
1    1    1    0
2    2    0    0
3    3    0    0
4    1    1    0
5    2    0    0
6    3    0    0

而不是函数中的两个var[i]参数,我试图弄清楚如何将它们指定为像c("var1", "var2")这样的单个参数中的向量。我需要更改功能才能完成此任务?

1 个答案:

答案 0 :(得分:1)

    Chg.var.df <- function(data, prod, vars){
      data[data$PROD == prod, vars] <- -1
      return(data)
    }

并将变量列表传递给函数。