如何使用R中的函数更新数据帧中的变量值?

如何使用R中的函数更新数据帧中的变量值?,r,function,variables,dataframe,R,Function,Variables,Dataframe,我创建下面的函数来更新数据框中的一些变量。它不更新变量,而是创建新变量。我不知道为什么将P1SEG1和P1SEG2传递到var1和var2不起作用 数据帧: df <- read.table(text=" PROD P1SEG1 P1SEG2 1 1 0 2 0 0 3 0 0 1 1

我创建下面的函数来更新数据框中的一些变量。它不更新变量,而是创建新变量。我不知道为什么将
P1SEG1
P1SEG2
传递到
var1
var2
不起作用

数据帧:

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

如果要将变量传递给
var1
,最好不要在函数中使用
$var1
。相反,您应该按如下方式使用它:

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

该函数也可以通过循环“var”列来简化

Chg.var.df <- function(data, prod, var1, var2){
     varNew <- c(var1, var2)
     data[varNew] <- lapply(data[varNew], replace,  list = data$PROD==prod, values =-1)
     data
 }

您不应该使用
$var1
,而是应该按如下方式使用它:
data[data$PROD==PROD,var1]@prolalistatusmaximus我在
[
Chg.var.df <- function(data, prod, var1, var2){
  data[data$PROD == prod, var1] <- -1
  data[data$PROD == prod, var2] <- -1
  return(data)
}
  PROD P1SEG1 P1SEG2
1    1     -1     -1
2    2      0      0
3    3      0      0
4    1     -1     -1
5    2      0      0
6    3      0      0
Chg.var.df <- function(data, prod, var1, var2){
     varNew <- c(var1, var2)
     data[varNew] <- lapply(data[varNew], replace,  list = data$PROD==prod, values =-1)
     data
 }
Chg.var.df(df, 1, 'P1SEG1', 'P1SEG2')
#   PROD P1SEG1 P1SEG2
#1    1     -1     -1
#2    2      0      0
#3    3      0      0
#4    1     -1     -1
#5    2      0      0
#6    3      0      0