2012-06-24 8 views
0

메시지에서 따옴표 안에 변수() 인쇄 방법 :나는 다음과 같은 변수했다

Test this. You entered "5 10" 

다음

min.v<-5 
max.v<-10 

과 내가 메시지 싶지을 message() 또는 paste() 이것을 인쇄이 가능 왜냐하면 두 함수 모두 따옴표를 문자열로 간주하기 때문입니다. 메시지의 변수는 큰 따옴표로 묶어야합니다.

message(as.character(paste(min.v, " ",max.v)))을 시도했지만 큰 따옴표는 무시됩니다. 따옴표를 탈출 :

이 질문은 당신이

옵션 1 일을 세 가지 옵션이 아마이 Solve the Double qoutes within double quotes issue in R

+1

R 해석기가 따옴표를 객체 이름을 지정하는 것으로 간주하기 때문에'paste'와'message'는 따옴표를 문자열로 간주하지 않습니다. –

답변

7

의 정확한 반대이다. 이렇게하려면 \"을 사용해야합니다.

cat("You entered ", "\"", min.v, " ", max.v,"\"", sep="") 
You entered "5 10" 

옵션 2 : 작은 따옴표로 삽입하여 따옴표 :

cat("You entered ", '"', min.v, " ", max.v,'"', sep="") 
You entered "5 10" 

편집 : 확인과포괄적이 대답을하기위한 노력의 일환으로, @baptiste하는

옵션 3 : 기능 사용 dQuote() :

가 매우 복잡 얻을 수 있지만 6,
options(useFancyQuotes=FALSE) 
cat("You entered ", dQuote(paste(min.v, max.v)), sep="") 
You entered "5 10" 
4
x = 5; y = "indeed" 
message("you entered ", dQuote(x)) 
message("you entered ", dQuote(paste(x, y))) 
+1

하나 이상의 변수와 함께 작동하지 않습니다 – GSee

+1

@ 먼저 연결해야합니다. – baptiste

+0

+1 매우 깔끔합니다. 나는 전에 이것을 보지 못했다. – Andrie

0

, 나는 코드가 깔끔한 대부분의 다른 옵션에 비해 일반적으로 찾을 수 있습니다.

min.v <- 5 
max.v <- 10 
msg <- 'Test this. You entered "%i %i"\n' 
str <- sprintf(msg, min.v, max.v) #generates string 
cat(str) #to output 
# or message(str) 

%i 정수 값, 자세한 내용은 ?sprintf를 볼 것으로 예상 자리는 다음과 같습니다 : - 기본적으로, 당신은 당신이 변수 값을 삽입 할 위치를 포맷 할 메시지를 가지고이 sprintf을위한 것입니다. 이 해결 방법은 작은 따옴표로 둘러싼 큰 따옴표에 여전히 의존하지만 paste 또는 cat을 직접 사용할 때보 다 훨씬 쉽게 읽을 수있는 코드를 얻을 수 있습니다.