#r #statistics
#r #Статистика
Вопрос:
[Новичок здесь] Застрял в очень странной проблеме. У меня есть функция для вычисления задержки, она отлично работает, когда аргументы не названы в функции, но не работает, когда я даю им имя.
Следующий код не работает и выводит «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 = " ") )
}
}
Почему?
Заранее спасибо.
Ответ №1:
в аргументе вашей функции:
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 были определены.