标签: stringi

gsub速度与模式长度

我最近一直在gsub广泛使用,我注意到短模式比长模式运行得更快,这并不奇怪.这是一个完全可重现的代码:

library(microbenchmark)
set.seed(12345)
n = 0
rpt = seq(20, 1461, 20)
msecFF = numeric(length(rpt))
msecFT = numeric(length(rpt))
inp = rep("aaaaaaaaaa",15000)

for (i in rpt) {
  n = n + 1
  print(n)
  patt = paste(rep("a", rpt[n]), collapse = "")
  #time = microbenchmark(func(count[1:10000,12], patt, "b"), times = 10)
  timeFF = microbenchmark(gsub(patt, "b", inp, fixed=F), times = 10)
  msecFF[n] = mean(timeFF$time)/1000000.

  timeFT = microbenchmark(gsub(patt, "b", inp, fixed=T), times = 10)
  msecFT[n] = mean(timeFT$time)/1000000.
}

library(ggplot2)
library(grid)
library(gridExtra)

axis(1,at=seq(0,1000,200),labels=T)

p1 = qplot(rpt, …
Run Code Online (Sandbox Code Playgroud)

regex string r gsub stringi

26
推荐指数
1
解决办法
940
查看次数

R:中的错误(只有源代码形式的包,可能需要编译C/C++/Fortran)

我正在尝试在R-Studio中安装'yaml'和'stringi'软件包,它不断给我这些错误:

> install.packages("stringi")
Package which is only available in source form, and may need compilation of C/C++/Fortran: ‘stringi’
These will not be installed
Run Code Online (Sandbox Code Playgroud)

要么

> install.packages('yaml')
Package which is only available in source form, and may need compilation of C/C++/Fortran: ‘yaml’
These will not be installed
Run Code Online (Sandbox Code Playgroud)

如何正确安装这些?

install yaml r stringi

26
推荐指数
3
解决办法
4万
查看次数

更新到R3.2.1后,包'stringi'不起作用

我看到了这个问题的一个版本,但仍然没有看到答案.我正在尝试使用ggplot2但是得到以下错误(今天早上使用R3.0.2'frisbee sailing'与RStudio版本0.98.1102一切正常.

我更新了R和Rstudio,现在得到以下内容:

library(ggplot)
Error in loadNamespace(i, c(lib.loc, .libPaths()), versionCheck = vI[[i]]) : 
           there is no package called ‘stringi’
            Error: package or namespace load failed for ‘ggplot2’
Run Code Online (Sandbox Code Playgroud)

我很自然地尝试过:

> install.packages('stringi')

**There is a binary version available but the source version is later:
    binary source needs_compilation
 stringi  0.4-1  0.5-2             FALSE**

 installing the source package ‘stringi’

trying URL 'http://cran.rstudio.com/src/contrib/stringi_0.5-2.tar.gz'
Content type 'application/x-gzip' length 3641292 bytes (3.5 MB)
==================================================
downloaded 3.5 MB

* installing *source* package ‘stringi’ ...
** …
Run Code Online (Sandbox Code Playgroud)

r ggplot2 stringi

21
推荐指数
3
解决办法
3万
查看次数

通过计算特定字符来设置字符串

我有以下字符串:

strings <- c("ABBSDGNHNGA", "AABSDGDRY", "AGNAFG", "GGGDSRTYHG") 
Run Code Online (Sandbox Code Playgroud)

我想切断字符串,一旦A,G和N的出现次数达到一定值,比如说3.在这种情况下,结果应该是:

some_function(strings)

c("ABBSDGN", "AABSDG", "AGN", "GGG") 
Run Code Online (Sandbox Code Playgroud)

我试图用stringi,stringr和正则表达式的表达式,但我无法弄清楚.

regex r gsub stringr stringi

17
推荐指数
3
解决办法
491
查看次数

R/regex with stringi/ICU:为什么'+'被认为是非[:punct:]字符?

我正在尝试从字符串向量中删除非字母字符.我认为[:punct:]分组会覆盖它,但它似乎忽略了+.这属于另一组角色吗?

library(stringi)
string1 <- c(
"this is a test"
,"this, is also a test"
,"this is the final. test"
,"this is the final + test!"
)

string1 <- stri_replace_all_regex(string1, '[:punct:]', ' ')
string1 <- stri_replace_all_regex(string1, '\\+', ' ')
Run Code Online (Sandbox Code Playgroud)

regex string r icu stringi

15
推荐指数
2
解决办法
704
查看次数

R中的重叠比赛

我已经搜索过并且能够找到此论坛讨论以实现重叠匹配的效果.

我还发现了以下SO问题,即找到索引来执行此任务,但是无法找到任何关于在R语言中抓取重叠匹配的简洁信息.

我可以在支持(PCRE)的大多数语言中通过使用正向前端断言执行此任务,同时在先行内部实现捕获组以捕获重叠的匹配.

但是,虽然实际执行此操作的方式与其他语言相同,但perl=T在R中使用时,结果不会产生.

> x <- 'ACCACCACCAC'
> regmatches(x, gregexpr('(?=([AC]C))', x, perl=T))[[1]]
[1] "" "" "" "" "" "" ""
Run Code Online (Sandbox Code Playgroud)

使用stringistringr包都是一样的.

> library(stringi)
> library(stringr)
> stri_extract_all_regex(x, '(?=([AC]C))')[[1]]
[1] "" "" "" "" "" "" ""
> str_extract_all(x, perl('(?=([AC]C))'))[[1]]
[1] "" "" "" "" "" "" ""
Run Code Online (Sandbox Code Playgroud)

执行此操作时应返回的正确结果是:

[1] "AC" "CC" "AC" "CC" "AC" "CC" "AC"
Run Code Online (Sandbox Code Playgroud)

编辑

  1. 我很清楚,regmatches对于捕获的匹配不能很好地工作,但是在regmatches中究竟什么导致了这种行为?为什么没有返回结果?我正在寻找一个有点详细的答案.

  2. stringi和 …

regex string r dna-sequence stringi

14
推荐指数
3
解决办法
1687
查看次数

如何从本地文件安装stringi(绝对没有Internet访问)

我正在使用RStudio在远程服务器上工作.此服务器无法访问Internet.我想安装包"stringi".我看过这个s tackoverflow文章,但每当我使用该命令时

install.packages("stringi_0.5-5.tar.gz", 
                 configure.vars="ICUDT_DIR=/my/directory/for/icudt.zip")
Run Code Online (Sandbox Code Playgroud)

它只是试图访问互联网,这是它无法做到的.到目前为止,我一直在使用工具 - >安装包 - >从打包存档文件安装.但是,由于此错误,我无法再使用此方法.

我该如何安装这个包?

r package stringi

13
推荐指数
3
解决办法
7706
查看次数

如何使用OpenNLP和stringi检测句子边界?

我想打破下string一句话:

library(NLP) # NLP_0.1-7  
string <- as.String("Mr. Brown comes. He says hello. i give him coffee.")
Run Code Online (Sandbox Code Playgroud)

我想展示两种不同的方式.一个来自包装openNLP:

library(openNLP) # openNLP_0.2-5  

sentence_token_annotator <- Maxent_Sent_Token_Annotator(language = "en")  
boundaries_sentences<-annotate(string, sentence_token_annotator)  
string[boundaries_sentences]  

[1] "Mr. Brown comes."   "He says hello."     "i give him coffee."  
Run Code Online (Sandbox Code Playgroud)

第二个来自包装stringi:

library(stringi) # stringi_0.5-5  

stri_split_boundaries( string , opts_brkiter=stri_opts_brkiter('sentence'))

[[1]]  
 [1] "Mr. "                              "Brown comes. "                    
 [3] "He says hello. i give him coffee."
Run Code Online (Sandbox Code Playgroud)

在第二种方式之后,我需要准备句子以删除多余的空格或再次将新的字符串分解成句子.我可以调整stringi函数来提高结果的质量吗?

当它是一个大数据时,openNLP(非常)慢stringi.
有没有办法结合stringi( - >快速)和openNLP …

regex r text-mining opennlp stringi

12
推荐指数
2
解决办法
705
查看次数

拆分保持重复分隔符

我正在尝试使用stringi包拆分分隔符(可能重复分隔符)但保留分隔符.这类似于我问moons前的这个问题:R分割分隔符(split)保留分隔符(split)但分隔符可以重复.我不认为base strsplit可以处理这种类型的正则表达式.该stringi包可以,但我无法弄清楚如何将它分割的分隔符,如果有重复,也不要在字符串的结尾留下一个空字符串格式的正则表达式.

基本R解决方案,stringr,stringi等解决方案都受到欢迎.

后来的问题发生是因为我使用贪婪*,\\s但空间不是空间,所以我只能考虑将其留在:

MWE

text.var <- c("I want to split here.But also||Why?",
   "See! Split at end but no empty.",
   "a third string.  It has two sentences"
)

library(stringi)   
stri_split_regex(text.var, "(?<=([?.!|]{1,10}))\\s*")
Run Code Online (Sandbox Code Playgroud)

#结果

## [[1]]
## [1] "I want to split here." "But also|"     "|"          "Why?"                 
## [5] ""                     
## 
## [[2]]
## [1] "See!"       "Split at end but no empty." ""                          
## 
## [[3]]
## [1] "a third string." …
Run Code Online (Sandbox Code Playgroud)

regex string r stringi

11
推荐指数
2
解决办法
557
查看次数

如何从archive安装stringi库并安装本地icu52l.zip

我们在生产环境中使一些R代码工作时感到笨拙,作为其中的一部分,我们正在安装一些R包,如下所示:

# Default directories and mirrors
WORKING_DIR  <- "/srv/foo/bar/baz"

LIB_DIR      <- paste( WORKING_DIR, "libs", sep="/" )
setwd(WORKING_DIR)
stringi.loc <- paste( WORKING_DIR, "stringi_0.4-1.tar.gz", sep="/" )
Run Code Online (Sandbox Code Playgroud)

这可能不是安装R软件包最优雅的方式,但它似乎对我们没用(任何其他关于R软件包管理的提示都会受到欢迎,但在这个阶段有点迟了:).

但是,stringi包似乎依赖于icu52l包,它通过网络安装:

checking for R... /usr/lib64/R/bin/R
checking for gcc... gcc -std=gnu99
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes …
Run Code Online (Sandbox Code Playgroud)

ubuntu r icu stringi

11
推荐指数
2
解决办法
1万
查看次数

标签 统计

r ×10

stringi ×10

regex ×6

string ×4

gsub ×2

icu ×2

dna-sequence ×1

ggplot2 ×1

install ×1

opennlp ×1

package ×1

stringr ×1

text-mining ×1

ubuntu ×1

yaml ×1