Я пытаюсь зациклить график ggplot2 с линией линейной регрессии над ним. Это работает, когда я набираю имя столбца y вручную, но метод цикла, который я пытаюсь, не работает. Это определенно не проблема с набором данных.
Я пробовал множество решений на разных веб-сайтах о том, как зациклить ggplot, и тот, который я пробовал, является самым простым, что я могу найти, который почти выполняет свою работу.
Код, который работает, следующий:
plots <- ggplot(Everything.any, mapping = aes(x = stock_VWRETD, y = stock_10065)) +
geom_point() +
labs(x = 'Market Returns', y = 'Stock Returns', title ='Stock vs Market Returns') +
geom_smooth(method='lm',formula=y~x)
Но я не хочу делать это еще 40 раз (а затем и в 5 раз больше по другим причинам). Код, который я нашел в Интернете и попытался изменить его для моих целей, выглядит следующим образом:
plotRegression <- function(z,na.rm=TRUE,...){
nm <- colnames(z)
for (i in seq_along(nm)){
plots <- ggplot(z, mapping = aes(x = stock_VWRETD, y = nm[i])) +
geom_point() +
labs(x = 'Market Returns', y = 'Stock Returns', title ='Stock vs Market Returns') +
geom_smooth(method='lm',formula=y~x)
ggsave(plots,filename=paste("regression1",nm[i],".png",sep=" "))
}
}
plotRegression(Everything.any)
Я ожидаю, что это будет хороший график, который я ожидал получить, график Возвращение акций против графика Рынок, но вместо этого по оси Y я получаю одно значение, которое является именем соответствующего столбца, и Рыночная стоимость изображена как обычно, но как бы на прямой числовой линии через одно значение оси y. Пожалуйста, дайте мне знать, что я делаю неправильно.
Желаемый участок:
Фактический участок:
Пример данных доступен на Google Диске здесь:
https://drive.google.com/open?id=1Xa1RQQaDm0pGSf3Y-h5ZR0uTWE-NqHtt