2012-04-06 45 views
4

我想將整數序列映射爲表達式文本序列,以便將後者用作圖中的刻度標記,例如,從整數序列生成表達式文本列表

lbls <- lapply(-2:2, function(i) expression(i * pi)) 
plot(...) 
axis(1, at=seq(-2,2)*pi, labels=lbls) 

到目前爲止,我已經試過了,我能想到的bquotesubstituteexpression等所有的變化,但顯然我必須錯過了一些東西。 此外,FAQ和相關SO問題&答案沒有完全解決這個問題。

我怎麼會做正確的(我想axis呈現pi爲希臘字母,並有-2 ... 2在上面的例子中取代i)?

回答

4

試試這個:

lbls <- do.call("expression", lapply(-2:2, function(i) substitute(X * pi, list(X = i)))) 
plot(-10:10, -10:10, xaxt="n") 
axis(1, at=seq(-2,2)*pi, labels=lbls) 

enter image description here

+0

工程就像一個魅力,謝謝! – fotNelton 2012-04-06 10:40:35

+2

Thanks @Roman或者使用'bquote'你可以這樣寫:'lbls < - do.call(「expression」,lapply(-2:2,function(i)bquote(。(i)* pi))) ' – kohske 2012-04-06 10:41:02

2

試試這個:

lbls <- parse(text = paste(seq(-2, 2), "pi", sep = "*")) 
+0

好的!我一定忽略了''parse'中的'text'參數。 – fotNelton 2012-04-06 12:19:09

+0

這個建議對那些表達式在列表中完全不同的人更有幫助。謝謝! – Nova 2015-07-14 18:20:01