如何使用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")
这样的单个参数中的向量。我需要更改功能才能完成此任务?
答案 0 :(得分:1)
Chg.var.df <- function(data, prod, vars){
data[data$PROD == prod, vars] <- -1
return(data)
}
并将变量列表传递给函数。