等效功能可替代excel

时间:2019-12-02 12:17:39

标签: r regex replace quotation-marks

我想给数百个单词加上引号(用空格括起来),并用逗号隔开。最好只使用一个或几个功能,以避免由于时间上的花费而进行人工替换。

典型问题:

words <- c("Paris Milan Berlin")

输出应为:“巴黎”,“米兰”,“柏林”

我已经尝试过gsub()str_extract(),但是没有得到理想的结果。

4 个答案:

答案 0 :(得分:3)

您可以使用gsub"放在单词周围,并将,放在单词之间。

x <- gsub("[[:blank:]]+", ",", gsub('(\\b[[:alnum:]]+\\b)', '"\\1"', words))
x
#[1] "\"Paris\",\"Milan\",\"Berlin\""

noquote(x)
#"Paris","Milan","Berlin"

或者事件变短,如@ zx8754的评论所建议

paste0('"', gsub(' ', '","',  words), '"')

答案 1 :(得分:2)

使用基数R(假设您总是想在一个空格上分割),您可以做得简单

unlist(strsplit(words, split = " "))

答案 2 :(得分:1)

可能有几种方法。这是其中之一:

library(tokenizers)
words <- c("Paris Milan Berlin")
tokenize_words(words, simplify =TRUE)
> tokenize_words(words, simplify =TRUE)
[1] "paris"  "milan"  "berlin"

答案 3 :(得分:1)

除了使用strsplit(由@Valeri Voev提及)的方法之外,另一种方法是使用regmatches()gregexpr,即,

regmatches(words,gregexpr("[[:alnum:]]+",words))[[1]]

给出

> regmatches(words,gregexpr("[[:alnum:]]+",words))[[1]]
[1] "Paris"  "Milan"  "Berlin"

要输出字符串,完整的代码如下所示:

words <- c("Paris Milan Berlin")

r <- regmatches(words,gregexpr("[[:alnum:]]+",words))[[1]]

res1 <- toString(sapply(r, function(v) paste0('"',v,'"')))
# > res1
# [1] "\"Paris\", \"Milan\", \"Berlin\""

res2 <- toString(sapply(r, function(v) paste0("'",v,"'")))
# > res2
# [1] "'Paris', 'Milan', 'Berlin'"