x <- "Hello World"
</p> <pre><code>x <- strsplit(x, " ") </code></pre> <p>X [후, 나는 문자열이있는 경우
가 어떻게 문자열 분할을 사용하여, 두 번째 단어, "세계"에 액세스 할 수 있습니다R에 분할 문자열의 요소에 액세스 [2]] 아무것도하지 않습니다.
x <- "Hello World"
</p> <pre><code>x <- strsplit(x, " ") </code></pre> <p>X [후, 나는 문자열이있는 경우
가 어떻게 문자열 분할을 사용하여, 두 번째 단어, "세계"에 액세스 할 수 있습니다R에 분할 문자열의 요소에 액세스 [2]] 아무것도하지 않습니다.
주석에서 언급했듯이 strsplit
은 목록 개체를 반환한다는 것을 알고 있어야합니다. 귀하의 예제는 하나의 항목 (길이 1의 벡터)을 분할하기 때문에 목록의 길이는 1입니다. 길이가 3 인 벡터 (분할 할 텍스트 항목 3 개)를 입력하여 약간 다른 예를 설명하겠습니다 :
input <- c("Hello world", "Hi there", "Back at ya")
x <- strsplit(input, " ")
> x
[[1]]
[1] "Hello" "world"
[[2]]
[1] "Hi" "there"
[[3]]
[1] "Back" "at" "ya"
반환 된 목록에는 입력 벡터의 각 요소에 하나씩, 세 개의 요소가 있습니다. 각 목록 요소는 strsplit
호출에 따라 분할됩니다. 그래서 우리는 [[
를 사용하여 이러한 목록 요소 중 하나를 호출 할 수 있습니다 (이것은 당신의 x[[2]]
호출이 무엇을하고 있었는지,하지만 당신은 당신이 대가로 아무것도 얻을 수없는 이유입니다, 하나 개의 목록 요소를했다) : 이제
> x[[1]]
[1] "Hello" "world"
> x[[3]]
[1] "Back" "at" "ya"
을 우리가 [
호출을 추가하여 그 목록 요소의 두 번째 부분을 얻을 수 있습니다 :
> x[[1]][2]
[1] "world"
> x[[3]][2]
[1] "at"
이 각 목록 요소에서 두 번째 항목을 반환됩니다 ("뒤로 가게에서"입력 "에서"돌아왔다 있습니다 이 경우). apply
제품군의 항목을 사용하여 모든 항목에 대해이 작업을 동시에 수행 할 수 있습니다.
> sapply(x, "[", 2)
[1] "world" "there" "at"
여기 입력 (2) 동작 x[2]
을 의미하는 [
운영자에게 전달의 마지막 값리스트의 모든 요소에 적용된다 : sapply
아마도이 경우에 좋을 것이다 벡터를 리턴한다. 대신 두 번째 항목으로, 각 목록 요소의 마지막 항목을 원하는 경우
, 우리는 [
대신 sapply
호출 내에서 tail
를 사용할 수 있습니다
> sapply(x, tail, 1)
[1] "world" "there" "ya"
이 시간, 우리가했습니다 모든 목록 요소에 tail(x, 1)
을 적용하여 마지막 항목을 제공했습니다. 선호로
,이 같은 조치를 적용하는 나의 마음에 드는 방법과 같이 두 번째 단어를 들어, magrittr
파이프입니다 :
x <- input %>%
strsplit(" ") %>%
sapply(tail, 1)
> x
[1] "world" "there" "ya"
그것은'의 :
또는 마지막 단어에 대한
x [[1]] [2]'. 'strsplit'는리스트를 반환합니다. 분할 문자열은 목록 결과의 첫 번째 요소에 있습니다. ''세계''는 그 요소의 두 번째 가치입니다. 'scan (text = x, what = "") [2]'도 할 수있다. –