2016-10-19 11 views
1

[初心者ここ]非常に奇妙な問題に悩まされています。私はラグを計算する関数を持っていますが、引数が関数で指定されていないときにはうまく動作しますが、名前を付けたときはうまく動作しません。 (私は列を渡しています)引数のクラスとしてユーザー定義関数の引数の名前を付けた後、データフレームとして渡される列

次のコードdoesntの仕事、そして版画 "data.frame"

lagger = function(ind = a,dep = c,lag = b){ 
    print(class(a)) 
    print(paste("linear correlation" ,cor(a,c), sep=" ")) 
    print(paste("log linear correlation:" ,cor(log(a),c), sep=" ")) 
    print(paste("log log correlation:" ,cor(log(a),log(c)), sep=" ")) 
    for (i in 1:b){ 
    del = a 
    del <- c(rep(NA,i),a[1:(NROW(a)-i)]) 
    corr = (cor(del,c,use="complete")) 
    corr_log = cor(del,c,use="complete") 
    corr_log_log = cor(log(del),log(c),use="complete") 
    print(paste(" lag of" ,i , "unit/s :" , round(corr,3) ,"log",round(corr_log,3),"log log",round(corr_log_log,3), sep = "  ")) 

    } 

} 

このコードは動作しますが:

lagger = function(a,c,b){ 
    print(class(a)) 
    print(paste("linear correlation" ,cor(a,c), sep=" ")) 
    print(paste("log linear correlation:" ,cor(log(a),c), sep=" ")) 
    print(paste("log log correlation:" ,cor(log(a),log(c)), sep=" ")) 
    for (i in 1:b){ 
    del = a 
    del <- c(rep(NA,i),a[1:(NROW(a)-i)]) 
    corr = (cor(del,c,use="complete")) 
    corr_log = cor(del,c,use="complete") 
    corr_log_log = cor(log(del),log(c),use="complete") 
    print(paste(" lag of" ,i , "unit/s :" , round(corr,3) ,"log",round(corr_log,3),"log log",round(corr_log_log,3), sep = "  ")) 

    } 

} 

なぜ? ありがとうございます。あなたの関数の引数で

答えて

2

ind = a 

は、引数indのデフォルト当たりの価値があることを意味します。 indは引数の名前なので、aの代わりに関数で使用する必要があります。あなたがあなたの関数を使用するときa、b、cは定義されている場合、あなたは

lagger(ind = a, dep =c, lag = b) 

を使用することができます

lagger <- function(ind,dep,lag){ 
    print(class(ind)) 
    print(paste("linear correlation" ,cor(ind,dep), sep=" ")) 
    print(paste("log linear correlation:" ,cor(log(ind),dep), sep=" ")) 
    print(paste("log log correlation:" ,cor(log(ind),log(dep)), sep=" ")) 
    for (i in 1:lag){ 
    del = ind 
    del <- c(rep(NA,i),ind[1:(NROW(ind)-i)]) 
    corr = (cor(del,dep,use="complete")) 
    corr_log = cor(del,dep,use="complete") 
    corr_log_log = cor(log(del),log(dep),use="complete") 
    print(paste(" lag of" ,i , "unit/s :" , round(corr,3) ,"log",round(corr_log,3),"log log",round(corr_log_log,3), sep = "  ")) 

    } 

} 

はこれを試してみてください。

関連する問題