2013-07-22 2 views
1

R 단위로 물리적 단위를 표시하고 싶습니다.표현식의 변수 부분 (...) R

plot(rnorm(10),rnorm(10),main=expression(µg.L^-1)) 

가 부 정적 알려지지 않은 것으로 가정하자, 가변 [부]로 주어진다 :

unit = 'µg.L^-1' 
plot(rnorm(10),rnorm(10),main=expression(unit)) 

더 인쇄술을 위하여, I는 식 기능이 방법을 사용하여 이것은 [unit]이 값으로 대체되지 않기 때문에 당연히 작동하지 않습니다. 어쨌든 그것을 달성 할 수있는 방법이 있습니까?

편집 : 여기에서 주요 어려움은 표시 할 단위가 내 플롯 기능에 문자열로 전송된다는 것입니다. 따라서 unit의 내용은 어떤 시점에서 표현식으로 해석되어야하며 (즉, 문자열에서 표현식 객체로 변환 됨), 여기가 texb의 답이 도움이되는 곳입니다. 그러므로 parse을 사용하는 것이 여기에 기본이며 게시글에 언급되지 않았기 때문에이 질문의 중복을 해제하십시오.

답변

2

방법에 대해 :

unit = 'µg.L^-1' 
plot(rnorm(10),rnorm(10),main=parse(text=unit)) 
+0

작품처럼. 고마워요! – pveber

+1

또는'main = bquote (. (unit))' – baptiste

+0

이것은 해결책이 아니며 잘못된 타이포그래피를 생성합니다 (실제로'main = unit '과 다른 것은 아닙니다). – pveber

2

bquote 기능은 당신에게 변수의 값을 삽입하는 동안 식을 만드는 유연성을 제공합니다. 다음은 하나의 예입니다 :

+0

불명확하지만 요점을 놓치고 싶다면 죄송합니다. 단위가 무엇인지 미리 알지 못합니다. V.^2뿐만 아니라 mg.L^-1 일 수도 있습니다. 그러한 물리적 단위를 문자열로 렌더링 할 수있는 함수가 필요합니다. 'unit '의 내용이 해석되지 않고 (따라서 올바르게 렌더링되지 않기 때문에) 당신이 설명하는 서브젝트는 그 목적에 쓸모가 없다. – pveber

+0

@pveber, 나는 제목에서 "part"라는 단어를 사용하여 결국 유닛이 더 큰 표현식의 일부인 곳으로 확장 될 수 있음을 암시합니다. 제목, 'bquote'및 도움말 페이지 도움말에 언급 된 기능으로 사용됩니다. 서로 다른 부분의 표현을 만드는 것. –

2

두 답변 모두 도움이 될 것이라고 생각하지만 plotmath 구문을보다 완전하게 사용하고 싶습니다. 현재 받아 들인 답은 실제로 그리스어를 구문 분석하지 않으며 그렉 스노우 (Greg Snow)의 대답은 표현식을 값으로 사용할 수있는 방법을 설명하지 않습니다. (표현식을 대체하는 방법을 보여줍니다.) 이것은 또 다른 대안으로, 플롯 매터 cdot 연산자를 분리형 "도트"로 사용하여 보여줍니다.이 점은 타이포그래피에 대한 귀하의 관심을 효과적으로 해결한다고 생각합니다.

plot(1,1, main=expression(mu*g %.% L^-1)) 

이 완전히 형성 표현식을 작성하고 이름으로 저장할 수도 있습니다 내가 기대

micgmperL = expression(mu*g %.% L^-1) 
plot(1,1, main=micgmperL) 
+0

감사합니다. 흥미 롭습니다.하지만 Greg에 댓글을 달았습니다. 나는 이것이 내 질문에 대답하지 않는다고 생각합니다. 줄거리를 할 때 물리적 변수를 포함하는 문자열 변수 만 있습니다. 문자열에는 "mg.L^2"또는 "expression (mu * g %. % L^2)"이 포함될 수 있지만이 내용은 해석되어야하며 문자열에서 표현식으로 변환됩니다. 귀하의 제안은 실제로 다음과 같이 구문 분석과 함께 사용하면 유용합니다. unit = 'expression (붙여 넣기 ("농도", mu * g %. % L^-1)) plot (rnorm (10), rnorm (10), main = eval (구문 분석 (텍스트 = 단위))) – pveber