gpt4 book ai didi

r - 在一行中按字数对字符串向量进行子集化

转载 作者:行者123 更新时间:2023-12-04 01:15:40 25 4
gpt4 key购买 nike

我有一个字符串向量

rownames
[1] "multifarmacias descuento" "multifarmacias" "multifarmacias"

我的目标是通过仅包含一个单词的字符串在一行中对 rownames 进行子集化 - 输出将是

[1] "multifarmacias"           "multifarmacias"

我试过以下但它抛出一个错误:

rownames[which(sapply(strsplit(rownames, " "),length)) == 1]

Error in which(sapply(strsplit(rownames, " "), length)) :
argument to 'which' is not logical

是否有一个优雅的解决方案来根据字符串的单词长度对字符串向量进行子集化?

最佳答案

使用str_count会更容易一些

library(stringr)
rownames[str_count(rownames, "\\w+") == 1]
#[1] "multifarmacias" "multifarmacias"

如果我们使用 strsplitlengths(来自 base R)会更有效率

rownames[lengths(strsplit(rownames, "\\s+")) == 1]
#[1] "multifarmacias" "multifarmacias"

OP 帖子中的错误是基于 ) 的错误放置,它应该在 ==1 之后,因为应用了 which直接在长度向量上,即

 which(c(2, 1, 1))

Error in which(c(2, 1, 1)) : argument to 'which' is not logical

数据

rownames <- c("multifarmacias descuento", "multifarmacias", "multifarmacias")

关于r - 在一行中按字数对字符串向量进行子集化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63459273/

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