2013-08-30 2 views
1

снова я застрял ...R - Сохранение переменных в dataframe от собственной функции

Я хочу, чтобы написать функцию, чтобы получить некоторую статистику для проверки предположений для линейной регрессии. Функция я цитирую еще не сделана, но я думаю, вы получите точку:

check.regression <- function(regmodel, dataframe, resplots = TRUE, 
          durbin = TRUE, savecheck = TRUE) { 
    print(dwt(regmodel)) # Durbin-Watson-Test 
    dataframe$stand.res <- rstandard(regmodel) # Saving Standardized Residuals     
} 

Как вы видите, я хочу, чтобы сохранить стандартизованные остатки модели в данной dataframe.

regmodel относится к модели, вычисленной линейной регрессией lm (y ~ x), а dataframe - это имя кадра данных, из которого вычисляется модель регрессии.

Проблема в том, что в моей функции ничего не сохраняется. Если я выполняю команду без функции, остатки будут правильно сохранены в моем кадре данных.

Я думаю, там должно быть что-то вроде

save(dataframe$stand.res <- rstandard(regmodel)) 

я также должен указать Plotting или пишущие вещи на консоль в функции, но я не знаю, как может быть, что команда.

Любые идеи?

ответ

3

R использует pass-by-value, поэтому то, что отправляется функции, является копией вашего data.frame. (вроде, передавая некоторые детали.)

Поэтому, когда вы вызываете функцию, вам необходимо: 1) вернуть измененный файл данных и 2) назначить его, иначе вы потеряете результаты.

check.regression <- function(regmodel, dataframe, resplots = TRUE, 
          durbin = TRUE, savecheck = TRUE) { 
    print(dwt(regmodel)) # Durbin-Watson-Test 
    dataframe$stand.res <- rstandard(regmodel) # Saving Standardized Residuals 
    return(dataframe)     
} 

dataframe <- check.regression(regmodel, dataframe) 
+0

Извините, теперь я понимаю. Я упустил из виду ваш ответ (dataframe <- check.regression (regmodel, dataframe))! С этой командой все работает хорошо. Благодаря! – deschen

Смежные вопросы