Я написал несколько функций, чтобы соответствовать некоторым моделям и делать графики на моем старом компьютере, но они, кажется, не работают, так как я начал использовать последнюю версию R (или пакета).
У меня такое же сообщение об ошибке, как и в этой теме , но я уже указываю на данные, загруженные в рабочую область, поэтому решение там не работает для меня.
Я работаю над данными из опроса во фрейме данных, где первая строка - заголовки столбцов, а значения - целые числа.Для примера мы сгенерируем 50x3 df - я пытался использовать данные из разных источников, у меня та же проблема, так что это будет работать для примера.
Я хочу сделать функциюкоторый может принимать имена столбцов и имя фрейма данных в качестве входных данных и выводить сводку вызова lm()
и графика.Использование lm()
или ggplot()
на small_wb
вне функции работает нормально.Но они не будут работать как часть функции.Я не вижу ничего плохого в моем синтаксисе, есть что-то очевидное, что я упускаю?
#########
## Load ggplot2
library(ggplot2)
#########
## Build a dataset
set.seed(1)
small_df <- data.frame(Monnaie = sample(1:100, 50, replace = TRUE), Echange = sample(1:100, 50, replace = TRUE), Art = sample(1:100, 50, replace = TRUE))
###########
## Using summary() and lm() works
summary(lm(Art ~ Monnaie, small_df))
# Call:
# lm(formula = Art ~ Monnaie, data = small_df)
#
# Residuals:
# Min 1Q Median 3Q Max
# -36.256 -23.532 -8.721 20.025 61.364
#
# etc etc etc
## Using ggplot() works too
ggplot(small_df, aes(Monnaie, Art)) +
geom_point() +
geom_smooth(method = "lm")
## ** awesome plot ** ##
###########
### Do some functions to test
## Plot lm
plot_lm <- function(i, j, wb){
ggplot(wb, aes(i, j)) +
geom_point() +
geom_smooth(method = "lm")
}
## Summary lm
mod_lm <- function(i, j, wb) {
summary(lm(j ~ i, data = wb))
}
## Plot + summary lm (this is what I want to achieve in the end, a function that does the plot + shows the data)
modplot_lm <- function(i, j, wb) {
summary(lm(j ~ i, data = wb))
plot_lm(i, j, wb)
}
##########
## Test the functions
plot_lm(Monnaie, Art, small_df)
mod_lm(Monnaie, Art, small_df)
modplot_lm(Monnaie, Art, small_df)
#######
## With me, they all throw an error - here's what the terminal prints out (I included the traceback text where possible - though the problem varies between 'Art' not found and 'Monnaie' not found)
> plot_lm(Monnaie, Art, small_df)
Error in FUN(X[[i]], ...) : object 'Monnaie' not found
> mod_lm(Monnaie, Art, small_df)
Hide Traceback
Error in eval(predvars, data, env) : object 'Art' not found
9. eval(predvars, data, env)
8. eval(predvars, data, env)
7. model.frame.default(formula = j ~ i, data = wb, drop.unused.levels = TRUE)
6. stats::model.frame(formula = j ~ i, data = wb, drop.unused.levels = TRUE)
5. eval(mf, parent.frame())
4. eval(mf, parent.frame())
3. lm(j ~ i, data = wb)
2. summary(lm(j ~ i, data = wb))
1. mod_lm(Monnaie, Art, small_df)
> modplot_lm(Monnaie, Art, small_df)
Hide Traceback
Error in eval(predvars, data, env) : object 'Art' not found
9. eval(predvars, data, env)
8. eval(predvars, data, env)
7. model.frame.default(formula = j ~ i, data = wb, drop.unused.levels = TRUE)
6. stats::model.frame(formula = j ~ i, data = wb, drop.unused.levels = TRUE)
5. eval(mf, parent.frame())
4. eval(mf, parent.frame())
3. lm(j ~ i, data = wb)
2. summary(lm(j ~ i, data = wb))
1. modplot_lm(Monnaie, Art, small_df)
Я пробовал вызовы функций отдельно, чтобы найти проблему, но кажется, что они все не работаютмне, что проблема связана с именами столбцов, не найденными в среде функции.
Вот моя информация о сеансе
> sessionInfo()
R version 3.5.1 (2018-07-02)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows >= 8 x64 (build 9200)
Matrix products: default
locale:
[1] LC_COLLATE=English_United Kingdom.1252 LC_CTYPE=English_United Kingdom.1252 LC_MONETARY=English_United Kingdom.1252
[4] LC_NUMERIC=C LC_TIME=English_United Kingdom.1252
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] ggplot2_3.0.0
loaded via a namespace (and not attached):
[1] Rcpp_0.12.19 withr_2.1.2 crayon_1.3.4 dplyr_0.7.6 assertthat_0.2.0 grid_3.5.1 plyr_1.8.4
[8] R6_2.3.0 gtable_0.2.0 magrittr_1.5 scales_1.0.0 pillar_1.3.0 rlang_0.2.2 lazyeval_0.2.1
[15] bindrcpp_0.2.2 labeling_0.3 tools_3.5.1 glue_1.3.0 purrr_0.2.5 munsell_0.5.0 compiler_3.5.1
[22] pkgconfig_2.0.2 colorspace_1.3-2 tidyselect_0.2.5 bindr_0.1.1 tibble_1.4.2