두 줄을 어떻게 연결할 수 있습니까?
두 값을 연결(합병, 결합)하려면 어떻게 해야 합니까?예를 들어 다음과 같습니다.
tmp = cbind("GAD", "AB")
tmp
# [,1] [,2]
# [1,] "GAD" "AB"
제 목표는 "tmp"에 있는 두 값을 하나의 문자열로 연결하는 것입니다.
tmp_new = "GAD,AB"
어떤 기능이 저를 위해 이것을 해줄 수 있습니까?
paste()
가는 길입니다.이전 포스터에서 지적했듯이 붙여넣기는 두 가지 작업을 수행할 수 있습니다.
값을 하나의 "문자열"로 연결합니다.
> paste("Hello", "world", sep=" ")
[1] "Hello world"
서 인수 논이벌는곳지어쟁곳▁argument.sep 사이에 를 지정합니다.
> x <- c("Hello", "World")
> x
[1] "Hello" "World"
> paste(x, collapse="--")
[1] "Hello--World"
서 인수 논이벌는곳지어쟁곳▁argument.collapse축소할 벡터 요소 사이에 사용할 문자를 지정합니다.
두 가지를 결합할 수도 있습니다.
> paste(x, "and some more", sep="|-|", collapse="--")
[1] "Hello|-|and some more--World|-|and some more"
help.search()를 들어 편한기니다입. 예를 예로 들 수 있습니다.
> help.search("concatenate")
로 안내하겠습니다.paste().
비 paste()대답, 우는볼수있다습니리▁at다.stringr::str_c()(그리고 나서)toString()it,). 이 에 이 합니다.이 질문만큼 오래되지 않았기 때문에 그것도 존재한다고 언급하는 것이 유용하다고 생각합니다.
보시다시피 매우 사용하기 쉽습니다.
tmp <- cbind("GAD", "AB")
library(stringr)
str_c(tmp, collapse = ",")
# [1] "GAD,AB"
문서 파일 설명을 보면 이 문제에 잘 들어맞습니다.
str_c가 어떻게 작동하는지 이해하려면 문자열 행렬을 구성하고 있다고 상상해야 합니다.각 입력 인수는 열을 형성하고 일반적인 재활용 규칙을 사용하여 가장 긴 인수의 길이로 확장됩니다.sep 문자열은 각 열 사이에 삽입됩니다.축소가 NULL인 경우 각 행은 단일 문자열로 축소됩니다.NULL이 아닌 경우 각 행 끝에 해당 문자열이 삽입되고 전체 행렬이 단일 문자열로 축소됩니다.
2016년 4월 13일 추가: 원하는 출력(추가 공간)과 정확히 일치하지는 않지만, 아무도 언급하지 않았습니다. toString()의 버전입니다.paste()와 함께collapse = ", "하드 코드화되어 있으므로 할 수 있습니다.
toString(tmp)
# [1] "GAD, AB"
했듯이, 다른사람지이듯했적이들,이듯,paste()가는 길입니다.하지만 타이핑을 해야 하는 것은 짜증날 수 있습니다.paste(str1, str2, str3, sep='')기본값이 아닌 구분 기호를 사용할 때마다 선택합니다.
당신은 삶을 훨씬 더 단순하게 만드는 래퍼 함수를 매우 쉽게 만들 수 있습니다.예를 들어, 구분 기호 없이 문자열을 연결하는 경우 다음 작업을 수행할 수 있습니다.
p <- function(..., sep='') {
paste(..., sep=sep, collapse=sep)
}
벡터에서 예: 또종종벡예문결경합는우려하을열자서터에는예경(우▁or:▁from▁strings▁you▁(:implode()PHP):
implode <- function(..., sep='') {
paste(..., collapse=sep)
}
다음 작업을 수행할 수 있습니다.
p('a', 'b', 'c')
#[1] "abc"
vec <- c('a', 'b', 'c')
implode(vec)
#[1] "abc"
implode(vec, sep=', ')
#[1] "a, b, c"
또한, 빌트인이 있습니다.paste0은 나의 것과같은일하것는을내▁와 같은 일을 .implode사용자 지정 구분자를 허용하지 않습니다.보다 약간 더 효율적입니다.paste().
> tmp = paste("GAD", "AB", sep = ",")
> tmp
[1] "GAD,AB"
저는 R concontate 문자열을 검색하여 구글에서 이것을 찾았습니다: http://stat.ethz.ch/R-manual/R-patched/library/base/html/paste.html
또는 파일 또는 stdout에 직접 출력하는 것이 목적인 경우 다음을 사용할 수 있습니다.cat:
cat(s1, s2, sep=", ")
다른 방법:
sprintf("%s you can add other static strings here %s",string1,string2)
그것은 때때로 유용합니다.paste()기능. %s주관적 문자열이 포함될 위치를 나타냅니다.
경로를 구축할 때 유용합니다.
sprintf("/%s", paste("this", "is", "a", "path", sep="/"))
산출량
/this/is/a/path
고유한 연산자를 만들 수 있습니다.
'%&%' <- function(x, y)paste0(x,y)
"new" %&% "operator"
[1] newoperator`
또한 'and'를 재정의할 수도 있습니다(&) 연산자:
'&' <- function(x, y)paste0(x,y)
"dirty" & "trick"
"dirtytrick"
기본 구문을 엉망으로 만드는 것은 보기 흉하지만 사용하는 것도 마찬가지입니다.paste()/paste0()만약 당신이 당신 자신의 코드로만 작업한다면 당신은 논리적으로 (항상 가능하게) 바꿀 수 있습니다.& and와 교환하는 사람.*논리적 '및'을 사용하는 대신 논리적 값의 곱셈을 수행합니다.
생성한 행렬 tmp를 고려하면 다음과 같습니다.
paste(tmp[1,], collapse = ",")
단순히 다음과 달리 cbind를 사용하여 행렬을 만드는 이유가 있다고 생각합니다.
tmp <- "GAD,AB"
문자열이 열이고 결과가 새 열이어야 하는 경우를 생각해 보십시오.
df <- data.frame(a = letters[1:5], b = LETTERS[1:5], c = 1:5)
df$new_col <- do.call(paste, c(df[c("a", "b")], sep = ", "))
df
# a b c new_col
#1 a A 1 a, A
#2 b B 2 b, B
#3 c C 3 c, C
#4 d D 4 d, D
#5 e E 5 e, E
선택적으로 다음을 건너뜁니다.[c("a", "b")]모든 열을 붙여넣어야 하는 경우 부분 집합을 지정합니다.
# you can also try str_c from stringr package as mentioned by other users too!
do.call(str_c, c(df[c("a", "b")], sep = ", "))
glue의 일부로 개발된 새로운 기능, 데이터 클래스 및 패키지입니다.tidyverse확장된 기능을 많이 사용합니다.붙여넣기, sprintf 및 이전 답변의 기능을 결합합니다.
tmp <- tibble::tibble(firststring = "GAD", secondstring = "AB")
(tmp_new <- glue::glue_data(tmp, "{firststring},{secondstring}"))
#> GAD,AB
reprex 패키지(v0.2.1)에 의해 2019-03-06에 생성되었습니다.
예, 이 질문의 간단한 예로는 과잉 살상이지만 많은 상황에서 강력합니다.(https://glue.tidyverse.org/) 참조)
다음과 비교한 빠른 예paste와 함께with밑에. 그.glue코드는 타이핑하기에 조금 더 쉬웠고 읽기에 조금 더 쉬워 보였습니다.
tmp <- tibble::tibble(firststring = c("GAD", "GAD2", "GAD3"), secondstring = c("AB1", "AB2", "AB3"))
(tmp_new <- glue::glue_data(tmp, "{firststring} and {secondstring} went to the park for a walk. {firststring} forgot his keys."))
#> GAD and AB1 went to the park for a walk. GAD forgot his keys.
#> GAD2 and AB2 went to the park for a walk. GAD2 forgot his keys.
#> GAD3 and AB3 went to the park for a walk. GAD3 forgot his keys.
(with(tmp, paste(firststring, "and", secondstring, "went to the park for a walk.", firststring, "forgot his keys.")))
#> [1] "GAD and AB1 went to the park for a walk. GAD forgot his keys."
#> [2] "GAD2 and AB2 went to the park for a walk. GAD2 forgot his keys."
#> [3] "GAD3 and AB3 went to the park for a walk. GAD3 forgot his keys."
reprex 패키지(v0.2.1)에 의해 2019-03-06에 생성되었습니다.
붙여넣기가 아닌 다른 답변:
x <- capture.output(cat(data, sep = ","))
x
[1] "GAD,AB"
어디에
data <- c("GAD", "AB")
언급URL : https://stackoverflow.com/questions/7201341/how-can-two-strings-be-concatenated
'programing' 카테고리의 다른 글
| woocommerce의 범주 및 제품에 대한 동일한 기본 URL (0) | 2023.06.16 |
|---|---|
| C에서 '**'는 무엇을 의미합니까? (0) | 2023.06.16 |
| Python xml 요소문자열 소스의 트리? (0) | 2023.06.16 |
| 하위 쿼리가 있는 Oracle 피벗 절의 예 (0) | 2023.06.11 |
| (Firebase에서) Google-services.json을 저장소에 추가해야 합니까? (0) | 2023.06.11 |