gpt4 book ai didi

r - 访问 R 中拆分字符串的元素

转载 作者:行者123 更新时间:2023-12-04 13:57:29 25 4
gpt4 key购买 nike

如果我有一个字符串,

x <- "Hello World"

如何使用字符串拆分访问第二个单词“World”,之后
x <- strsplit(x, " ")

x[[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"

请注意,返回的列表有 3 个元素,输入向量的每个元素一个。这些列表元素中的每一个都按照 strsplit 进行拆分称呼。所以我们可以使用 [[ 来调用这些列表元素中的任何一个。 (这就是您的 x[[2]] 调用所做的,但您只有一个列表元素,这就是您无法获得任何返回的原因):
> x[[1]]
[1] "Hello" "world"

> x[[3]]
[1] "Back" "at" "ya"

现在我们可以通过附加 [ 来获取任何这些列表元素的第二部分。称呼:
> x[[1]][2]
[1] "world"

> x[[3]][2]
[1] "at"

这将返回每个列表元素的第二个项目(请注意,在这种情况下,“Back at ya”输入已返回“at”)。您可以使用 apply 中的内容一次对所有项目执行此操作。家庭。 sapply将返回一个向量,在这种情况下可能会很好:
> sapply( x, "[", 2 )
[1] "world" "there" "at"

此处输入中的最后一个值 (2) 传递给 [运算符,表示操作 x[2]应用于每个列表元素。

如果您想要每个列表元素的最后一项而不是第二项,我们可以使用 tailsapply调用而不是 [ :
> sapply( x, tail, 1 )
[1] "world" "there" "ya"

这一次,我们申请了 tail( x, 1 )到每个列表元素,给我们最后一个项目。

作为偏好,我最喜欢的应用此类操作的方法是使用 magrittr管道,对于第二个词,如下所示:
x <- input %>%
strsplit( " " ) %>%
sapply( "[", 2 )

> x
[1] "world" "there" "at"

或者最后一句话:
x <- input %>%
strsplit( " " ) %>%
sapply( tail, 1 )

> x
[1] "world" "there" "ya"

关于r - 访问 R 中拆分字符串的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41336606/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com