쉼표로 구분 된 벡터 만들기


88

각 요소가 쉼표로 구분되는 문자형 벡터로 변환하려는 숫자 형 벡터가 있습니다.

> one = c(1:5)
> paste(as.character(one), collapse=", ")
[1] "1, 2, 3, 4, 5"
> paste(as.character(one), sep="' '", collapse=", ")
[1] "1, 2, 3, 4, 5"

그러나 출력이 다음과 같기를 바랍니다.

"1", "2", "3", "4", "5" 

붙여 넣기 기능에서 일부 매개 변수가 누락 되었습니까? 도움!?

답변:


91

shQuote이 작업을 수행하는 가장 좋은 방법 일 것입니다. 특히 다음과 같이 원하는 출력을 얻을 수 있습니다.

cat(paste(shQuote(one, type="cmd"), collapse=", "))

작은 따옴표가 괜찮 으면 다음을 사용할 수 있습니다.

paste(shQuote(one), collapse=", ")

type="cmd"실제로 대부분의 컨텍스트에 유용한 이스케이프 된 따옴표를 cat제공하지만 이스케이프되지 않은 따옴표로 어딘가에 표시하려는 경우 제공합니다.


2
paste(shQuote(one), collapse=", ")[1] "\"1\", \"2\", \"3\", \"4\", \"5\""작은 따옴표로 묶인 변형이 아닌을 제공합니다 .
vasili111

44

해당 출력이있는 문자형 벡터를 원한다고 말하지만이 질문을 찾는 다른 사람들은 대신 다음 함수 중 하나를 찾을 수 있습니다.

첫째, R에 대한 입력을 위해 출력을 준비하는 방법입니다. 다음과 dput같습니다.

> dput(as.character(one))
c("1", "2", "3", "4", "5")

둘째, csv 파일을 출력하는 방법 ( write.csv또는 write.table. 이러한 함수는 file여기에서 사용되지 않는 매개 변수 를 사용하여 파일로 직접 출력합니다.

> write.table(matrix(as.character(one),nrow=1), sep=",",
              row.names=FALSE, col.names=FALSE)
"1","2","3","4","5"

> write.csv(matrix(as.character(one),nrow=1),row.names=FALSE)
"V1","V2","V3","V4","V5"
"1","2","3","4","5"

1
감사! 이것은 가장 우아한 솔루션입니다
ikashnitsky

14

문자 벡터가 아닌 문자열로 출력을 원한다고 가정하면 다음을 시도 할 수 있습니다.

paste("'",as.character(one),"'",collapse=", ",sep="")

그것은 큰 따옴표가 아닌 숫자 주위에 작은 따옴표를 제공하지만 기본적으로 원하는 것입니다.

그리고 항상 이스케이프하여 큰 따옴표를 얻을 수 있습니다.

rs <- paste("\"",as.character(one),"\"",collapse=", ",sep="")
cat(rs)

큰 따옴표로 원하는 것을 인쇄해야합니다.


4

뿐만 아니라 shQuote, 기능을 참조 sQuote하고 dQuote각각 단일 및 이중 따옴표로 텍스트를 바꿈. 또한 options(useFancyQuotes=FALSE)일반 (단방향) ASCII 따옴표를 가져 오도록 설정 해야합니다.


3

toString과 비슷한 것

toString(paste0("'",1:10,"'") )

2

기능을 사용하려면 Noah의 답변에 추가하십시오 paste.

paste(shQuote(one, type="sh"), collapse=", ")

당신에게 줄 것 :

[1] '1','2','3','4','5'
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.