如何使用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