R:如何用引号将字符串的每个元素括起来

R: How to enclose each element of a string with inverted commas

我想从字符串中删除空格、句点和连字符,并用引号将结果字符串的每个元素括起来。此外,我想确保所有字母都是大写的。

我知道如何删除特殊字符列表,但由于我缺乏使用正则表达式或其他字符串操作函数(例如 stringr 函数)的经验,我无法添加封闭的引号。

如何转换

这样的字符串
test1 <- "A.1, b-1, C"             # start string
test2 <- gsub("[ .-]", "", test1)  # remove period and hyphen

生成字符串'A1','B1','C'?

我们可以在 , 上使用 strsplit,在用 gsub 删除 .- 并将大小写转换为大写后,后跟零个或多个空格

strsplit(gsub("[.-]", "", toupper(test1)), ",\s*")[[1]]
#[1] "A1" "B1" "C" 

如果我们需要单个字符串,在删除 .- 之后,捕获单词 (\w+) 并通过将 ' 包裹起来替换它捕获组的反向引用(\1

gsub('(\w+)', "'\1'", gsub("[.-]+", "", toupper(test1)))
#[1] "'A1', 'B1', 'C'"

使用

test1 <- "A.1, b-1, C"
test2 <- gsub("[^,\w]+", "", test1, perl=TRUE)
test2 <- paste0("'", gsub(",", "','", toupper(test2)), "'")

gsub("[^,\w]+", "", test1, perl=TRUE) 删除逗号以外的所有非单词字符,然后用 paste0("'", gsub(",", "','", toupper(test2)), "'").

将引号内的所有逗号替换为逗号并用引号引起来