Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 删除首字母缩略词中的点_R_Gsub - Fatal编程技术网

R 删除首字母缩略词中的点

R 删除首字母缩略词中的点,r,gsub,R,Gsub,我有一个向量,首字母缩写为U.S 我想删除字符之间的点,但我不想删除整个文档中的所有点,所以只删除缩略词中的点 我可以通过使用gsub实现这一点: text <- c("U.S.", "U.N.", "C.I.A") gsub("U.S.", "US", text) 但是我如何告诉R删除所有可能的首字母缩略词中的所有点,也就是说,在联合国或中情局?您可以在这里使用单词边界 gsub('\\b\\.','',vec) 或在注释中说明更简单的选项 您的问题似乎与您提供的代码有点不同:您希望

我有一个向量,首字母缩写为U.S

我想删除字符之间的点,但我不想删除整个文档中的所有点,所以只删除缩略词中的点

我可以通过使用gsub实现这一点:

text <- c("U.S.", "U.N.", "C.I.A")
gsub("U.S.", "US", text)

但是我如何告诉R删除所有可能的首字母缩略词中的所有点,也就是说,在联合国或中情局?

您可以在这里使用单词边界

gsub('\\b\\.','',vec)

或在注释中说明更简单的选项

您的问题似乎与您提供的代码有点不同:您希望在文本中替换可能包含非首字母缩略词/缩写的点的首字母缩略词

此代码通过搜索重复的大写字母-圆点组合来提取和识别首字母缩写词,这些组合可以在工作流程中手动检查和过滤,以确保不会拾取任何奇怪的内容,然后使用中的mgsub代码替换它们


gsub\\,文本?您可以对字符串进行进一步处理。我可以使用最终的gsub表达式删除最后的点!所以这个解决方案是有效的,谢谢!
text1 <- c("The U.S. and the C.I.A. are acronyms. They should be matched.")
m <- gregexpr("([A-Z]\\.)+", text1)
matches <- regmatches(text1, m)[[1]]
matches_nodot <- sapply(matches, gsub, pattern = "\\.", replacement = "")

mgsub <- function(pattern, replacement, x, ...) {
  if (length(pattern)!=length(replacement)) {
    stop("pattern and replacement do not have the same length.")
  }
  result <- x
  for (i in 1:length(pattern)) {
    result <- gsub(pattern[i], replacement[i], result, ...)
  }
  result
}


text2 <- mgsub(matches, matches_nodot, text1)
text2
# [1] "The US and the CIA are acronyms. They should be matched."