从 R 中的字符向量中删除引号?
Remove quotes from a character vector in R?
我有一些文字:
version of mackinnon’s “dominance approach,”
我已将其读入字符向量:
> my.char.vector
[1] "version" "of" "mackinnon’s" "“dominance" "approach,”"
如何删除双引号(和单引号),这样 my.char.vector 就是
[1] "version" "of" "mackinnons" "dominance" "approach,"
事实上,具有这个确切标题的另一个问题并不是在问同样的问题 - 它试图在不带引号的情况下打印。我的字符向量中的元素确实包含引号,我正试图将其删除。
这些是 "fancy" 引号——我从屏幕上剪切并粘贴了它们(如果您只使用 SHIFT-' [或键盘上的任何其他键],您将得到常规的 " 引号 .. .).
mcv <- c("version","of","mackinnon’s","“dominance","approach,”")
gsub("[’”“]","",mcv)
另一种可能性(似乎可以在我的系统上工作,但可能?system/locale/etc。具体?):将奇怪的字符转换为“#”或其他安全的字符,然后删除它们。
gsub("#","",iconv(mcv,"latin1","ASCII","#"))
试试这个。
gsub("[^[:print:]]", "", my.char.vector)
您可以为此使用 stringi
。我们可以使用 ICU 元字符 \P
来否定匹配值,并使用 --
来减去逗号的否定。
library(stringi)
mcv <- c("version", "of", "mackinnon’s", "“dominance", "approach,”")
stri_replace_all_regex(mcv, "[\P{Ll}--,]", "")
# [1] "version" "of" "mackinnons" "dominance" "approach,"
我只是在学习 ICU,但我认为这是正确的表达方式。
另一个选项qdap
library(qdap)
strip(mcv, char.keep=',')
#[1] "version" "of" "mackinnons" "dominance" "approach,"
或使用stringi
library(stringi)
stri_replace_all_regex(mcv, '[^[:alnum:],]+', '')
#[1] "version" "of" "mackinnons" "dominance" "approach,"
或base R
vapply(regmatches(mcv,gregexpr('[A-Za-z,]+', mcv)), paste,
collapse="", character(1L))
#[1] "version" "of" "mackinnons" "dominance" "approach,"
数据
mcv <- c("version","of","mackinnon’s","“dominance","approach,”")
我有一些文字:
version of mackinnon’s “dominance approach,”
我已将其读入字符向量:
> my.char.vector
[1] "version" "of" "mackinnon’s" "“dominance" "approach,”"
如何删除双引号(和单引号),这样 my.char.vector 就是
[1] "version" "of" "mackinnons" "dominance" "approach,"
事实上,具有这个确切标题的另一个问题并不是在问同样的问题 - 它试图在不带引号的情况下打印。我的字符向量中的元素确实包含引号,我正试图将其删除。
这些是 "fancy" 引号——我从屏幕上剪切并粘贴了它们(如果您只使用 SHIFT-' [或键盘上的任何其他键],您将得到常规的 " 引号 .. .).
mcv <- c("version","of","mackinnon’s","“dominance","approach,”")
gsub("[’”“]","",mcv)
另一种可能性(似乎可以在我的系统上工作,但可能?system/locale/etc。具体?):将奇怪的字符转换为“#”或其他安全的字符,然后删除它们。
gsub("#","",iconv(mcv,"latin1","ASCII","#"))
试试这个。
gsub("[^[:print:]]", "", my.char.vector)
您可以为此使用 stringi
。我们可以使用 ICU 元字符 \P
来否定匹配值,并使用 --
来减去逗号的否定。
library(stringi)
mcv <- c("version", "of", "mackinnon’s", "“dominance", "approach,”")
stri_replace_all_regex(mcv, "[\P{Ll}--,]", "")
# [1] "version" "of" "mackinnons" "dominance" "approach,"
我只是在学习 ICU,但我认为这是正确的表达方式。
另一个选项qdap
library(qdap)
strip(mcv, char.keep=',')
#[1] "version" "of" "mackinnons" "dominance" "approach,"
或使用stringi
library(stringi)
stri_replace_all_regex(mcv, '[^[:alnum:],]+', '')
#[1] "version" "of" "mackinnons" "dominance" "approach,"
或base R
vapply(regmatches(mcv,gregexpr('[A-Za-z,]+', mcv)), paste,
collapse="", character(1L))
#[1] "version" "of" "mackinnons" "dominance" "approach,"
数据
mcv <- c("version","of","mackinnon’s","“dominance","approach,”")