[新手在这里]困在一个非常奇怪的问题。我有一个计算滞后的函数,它在函数中没有命名参数时工作正常,但是当我给它们命名时它没有。
以下代码不起作用,并打印" data.frame"作为参数类a(当我通过专栏时)
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 = " ") )
}
}
为什么呢? 提前谢谢。
答案 0 :(得分:2)
:
ind = a
表示参数ind
的每个默认值都是a。
ind
是您的参数的名称,因此您必须在函数中使用它而不是a
。
试试这个:
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 = " ") )
}
}
然后当您使用您的功能时,您可以使用
lagger(ind = a, dep =c, lag = b)
如果定义了a,b和c。