2016-12-04 8 views
0

Rを使用して関数の中でアイテムのベクトルを単一の引数に渡すにはどうすればよいですか?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 

代わりの2つのvar[i]引数ですが、私はc("var1", "var2")のような単一の引数のベクトルとしてそれらを指定する方法を把握しようとしています。これを達成するために関数で何を変更する必要がありますか?

答えて

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

この関数に変数のリストを渡します。

+0

var1とvar2の値が異なる場合でも動作しますか?例えば。data [data $ PROD == prod、var2] < - 0' – RTrain3k

+0

はい、あなたは 'V = c(var1、var2)Chgのようにすることができます.var.df(data、prod、V) ' – G5W

+0

これは' data [data $ PROD == prod、vars] < - c(-1、0) 'なのでしょうか? –

関連する問題