0
我正嘗試使用for循環將多行添加到圖中。使用i作爲變量來導航我的數據,出於某種原因,我突然發現ggplot部分有錯誤,說我沒有找到該對象(「as.name中的錯誤(名稱(數據$ SURF) [i]):object'i'not found「)。似乎只有那些被接受的變量被鏈接到給ggplot的數據幀。我在ggplots之前使用過不同的變量,所以我不知道爲什麼現在不起作用。這是我的代碼:R:ggplot2中的循環變量出錯geom_line
library(ggplot2)
#creating object 'data' for example purpose
surf <- list()
day <- c(1:7)
for(i in 1:5){
surf[[i]] <- data.frame(day*i, day-i)
names(surf)[i] <- paste("var",i,sep = "")
colnames(surf[[i]]) <- c("T0", "whatever")
}
data <- list(surf)
names(data)[1] <- "SURF"
df <- data.frame(day)
ret <- ggplot(df, aes(x=day))
for(i in 1:length(names(data$SURF))){
df[,i+1] <- data$SURF[[i]]$T0
colnames(df)[i+1] <- names(data$SURF)[i]
ret <- ret + geom_line(data = df, aes(y=as.name(names(data$SURF)[i]), colour= names(data$SURF)[i]))
}
我設法解決在未完全令人愉悅的方式問題,通過在劇情部分省略新的變數。儘管如此,我並不完全滿意這個解決方案,因爲我想繼續使用更加自動化的代碼。這是「髒」的解決方案:
df <- data.frame(day)
ret <- ggplot(df, aes(x=day))
for(i in 1:length(names(data$SURF))){
df$y <- data$SURF[[i]]$T0
df$name <- names(data$SURF[i])
ret <- ret + geom_line(data = df, aes(y=y, colour= name))
}
我會很感激,如果有人可以幫助我弄清楚爲什麼使用‘外部’變量i並不在這個例子中工作
你爲什麼循環?一般來說,在ggplot,如果你要麼循環或添加t條他與你的情節相同的元素多次,你不正確的做法和按摩你的數據到另一種格式是更好的解決方案。 – Heroka
我認爲如果您使用「reshape」或「tidy」等包將您的多列重新整理爲數據值和分組列,然後將ggplot用作預期的顏色,則可以節省很多痛苦'color = grouping_column' –
@StephenHenderson,我如何將數據分組爲一個數據值和一個分組列?對不起,如果這是一個不必要的問題,但我不知道如何。 – oepix