我想给数百个单词加上引号(用空格括起来),并用逗号隔开。最好只使用一个或几个功能,以避免由于时间上的花费而进行人工替换。
典型问题:
words <- c("Paris Milan Berlin")
输出应为:“巴黎”,“米兰”,“柏林”
我已经尝试过gsub()
和str_extract()
,但是没有得到理想的结果。
答案 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'"