gpt4 book ai didi

R:根据函数中字符串中的单词数使用粘贴

转载 作者:行者123 更新时间:2023-12-02 06:57:05 26 4
gpt4 key购买 nike

我有一个列表,其中每个列表组件都有一个字符串向量。每个字符串向量的长度为 1,包含一个或多个用空格分隔的单词(原始列表要大得多):

> f <- list("one", "two three", "four", "five six seven")
> f
[[1]]
[1] "one"

[[2]]
[1] "two three"

[[3]]
[1] "four"

[[4]]
[1] "five six seven"

我需要做的是在每个组件中的字符串前后粘贴字符串,具体取决于它是否包含一个或多个单词。我寻找的结果是这样的:

[[1]]
[1] "Single number: one."

[[2]]
[1] "Multiple numbers: two three."

[[3]]
[1] "Single number: four."

[[4]]
[1] "Multiple numbers: five six seven."

我尝试了以下方法,使用 stringr 包中的 str_count 计算每个字符串中的单词数:

x <- lapply(f, function(j) {
if(str_count(string = f[[j]], pattern = "\\S+") == 1) {
xx[[j]] <- paste("Single number: ", f[[j]], ".", sep = "")
} else {
xx[[j]] <- paste("Multiple numbers: ", f[[j]], ".", sep = "")
}
})

但是,我收到以下错误:

Error in if (str_count(string = f[[j]], pattern = "\\S+") == 1) { : 
argument is of length zero

有人可以帮忙吗?

最佳答案

f[[j]] 可以在我们索引列表的元素时使用,即 lapply(seq_along(f),..,但在这里我们循环f 本身。所以,只需执行 str_count(j,..)

library(stringr)
lapply(f, function(j) {
if(str_count(j, '\\S+') >1) {
paste("Multiple numbers: ", j, '.', sep="")
} else paste("Single number: ", j, ".", sep="")
})
#[[1]]
#[1] "Single number: one."

#[[2]]
#[1] "Multiple numbers: two three."

#[[3]]
#[1] "Single number: four."

#[[4]]
#[1] "Multiple numbers: five six seven."

注意:这也可以在不使用任何外部包的情况下完成。

关于R:根据函数中字符串中的单词数使用粘贴,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29195769/

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