0
ggplot的部分代碼存儲在字符向量中。我想用這個代碼作爲我的ggplot的附加geoms。如何將字符串作爲代碼添加到ggplot對象
例1:
DF=data.frame(x=seq(1:10), y=seq(1:20))
a='geom_line()'# This is a string that should be converted to RCode
到目前爲止,我嘗試:
ggplot(DF, aes(x,y))+geom_point()+a
Error: Don't know how to add a to a plot
ggplot(DF, aes(x,y))+geom_point()+as.name(a)
Error: Don't know how to add as.name(a) to a plot
ggplot(DF, aes(x,y))+geom_point()+eval(parse(text=a))
Error in geom_line() + geom_line(y = 1) :
non-numeric argument to binary operator
ggplot(DF, aes(x,y))+geom_point()+deparse(substitute(a))
Error: Don't know how to add deparse(substitute(a)) to a plot
例2:
DF=data.frame(x=seq(1:10), y=seq(1:20))
a='geom_line()+geom_line(y=1)'
可能你想知道,爲什麼我會喜歡做的事,在第一地點?在for循環中,我創建了表達式並將它們作爲字符存儲在列表中。稍後,我將所有表達式粘貼到單個字符串表達式中。現在,我想將這個字符串添加到ggplot命令中。有什麼建議麼?
編輯:例1已成功解決。但示例2未解決。
是的,你是對的,我也嘗試過以前的文本參數,但對於我原來的例子沒有奏效。當字符串中有兩個geom(例如'a ='geom_line()+ geom_line(y = 1)'')時,'eval(parse(text = a))'不起作用。我將用兩個geom參數更新我的問題。 – JerryTheForester
請不要直接編輯問題。將它作爲額外的問題添加到原來的問題之下。我輸入的解決方案實際上並沒有解決你現在遇到的問題:) –
我認爲問題在於eval在將它作爲表達式添加之前試圖對參數進行求和。功能性解決方案似乎會對原始調用進行壓縮,添加表達式並將其作爲一個整體進行評估。 –