如何根据在 R 中使用 strsplit 的分隔类型定义 if 语句?

Posted

技术标签:

【中文标题】如何根据在 R 中使用 strsplit 的分隔类型定义 if 语句?【英文标题】:How can I define if statements depending on the type of the separation using strsplit in R? 【发布时间】:2021-10-29 21:53:51 【问题描述】:

我正在尝试使用textInput 创建一个闪亮的应用程序。这个想法是用户可以输入一个单词列表来使用它。

我找到了这个post,它允许我将单词拆分成一个向量。但是,这取决于用户决定如何在应用程序中输入单词。我想知道是否可以创建具有分隔类型的 if 语句。例如,如果用户这样写:

    word1,word2,word2 或 word1 word2 word3 或 word1、word2、word3 或 其他组合。

问题是我需要一个最终向量以便以后使用它。

我想要的分色类型示例:

#1
unlist(strsplit("a, b, c", ", "))
[1] "a" "b" "c"

#2
unlist(strsplit("a,b,c", ","))
[1] "a" "b" "c"


#3
unlist(strsplit("a b c", " "))
[1] "a" "b" "c"

有没有办法查看分离的类型? 喜欢...

if sep="," or sep=", " or sep=" " do something

另一方面,我想知道如果用户决定将所有内容都设为小写或大写,是否有可能使用 if 语句,以便仅将所有单词更改为一种类型。

有人可以帮助我吗?

提前致谢

问候

【问题讨论】:

【参考方案1】:

您可以使用| 将多个分隔符传递给strsplit

#split on comma followed by zero or more whitespace OR one or more whitespace
split_list <- function(x) unlist(strsplit(x, ',\\s*|\\s+'))

split_list("a, b, c")
#[1] "a" "b" "c"

split_list("a,b,c")
#[1] "a" "b" "c"

split_list("a b c")
#[1] "a" "b" "c"

使用toupper/tolower将所有单词分别设为大写或小写。

【讨论】:

以上是关于如何根据在 R 中使用 strsplit 的分隔类型定义 if 语句?的主要内容,如果未能解决你的问题,请参考以下文章

在 Pig 中投射 Flatten 和 Strsplit 的输出

strsplit() 输出为 r 中的数据帧

R:反斜杠()分割

当需要的拆分字符向量对于变量 (R) 中的所有观测值不一致时使用 strsplit

R语言使用sapply函数抽取strsplit分裂后的结果数据并使用cbind纵向合并到dataframe数据列中使用order函数对dataframe数据行进行排序

R字符串拆分函数(strsplit)中的非字符参数