dat <- sample(letters[1:20],size = 30,replace = T)
pat <- c('a',"c","g")
dat
[1] "h""c""q""a""s""a""d""b""c""n""a""t""e""q""s""k""j""t""l""j""n""t""r""m""h"
[26] "b""o""e""g""h"
pat
[1] "a""c""g"
microbenchmark::microbenchmark( yes_seq(pat,dat), yes_seq_cpp(pat,dat))
Unit: microseconds
expr min lq mean median uq max neval cld
yes_seq(pat, dat) 42.19343.33344.7871243.90345.0435106.052100 b
yes_seq_cpp(pat, dat) 5.7015.9876.619936.2726.842522.807100 a
我有一个在另一个大字符串中搜索模式/序列的函数,如果找到,则 ITINA,否则为 False
说明
我在 Rk 中有一个函数,但它在进行大型计算时速度很慢,或者说甚至有几个函数是用不同的样式编写的....。
这就是输入数据的样子,顺便说一下,两个字符串的长度可以是任意的。
这是第一个以标准风格编写的s1 函数,清晰但繁琐。
或更优雅的s2。
这两个函数做同样的事情。
我有一个问题/请求--你能用 rcpp 帮我写这个简单的函数吗?
就像几十页前 Reshetov 所做的那样。
(这与程序库无关)
我有一个在另一个大字符串中搜索模式/序列的函数,如果找到,则为 ITINA,否则为 False
图例
我在 Rk 中有一个函数,但它在进行大型计算时速度很慢,或者说甚至有几个函数是用不同的样式编写的....
这就是输入数据的样子,顺便说一下,两个字符串的长度都可以是任意的。
这是第一个用标准样式编写的s1 函数,清晰但繁琐。
或更优雅的s2 函数。
两者做同样的事情
我有一个问题/请求--你能用 rcpp 帮我写这个简单的函数吗?
我还没准备好,因为我没有空闲时间,也不太喜欢编码和调试。如果你能自己解决这个问题,会对你更有帮助。如果可以的话,我会回答一些具体的技术问题。
我还没准备好接手,因为我没有空闲时间,也不太喜欢编码和调试。你自己解决会更有用。如果可以的话,我会回答一些具体的技术问题。
谢谢你没有帮我)我自己想出来了,这很好 )
R 代码
Rcpp 代码
我有个问题:如何让 pat dat 输入变量既能接受数字向量(像现在这样),也能接受字符串向量?
p.s. 结果这个函数只快了 6 倍 (( 我还以为至少会快 100 倍呢 ((((
谢谢你不帮忙)我自己想出来了,这很好 )
R 代码
Rcpp 代码
有一个问题:如何使 pat dat 输入变量既能接受数字向量(像现在这样),也能接受字符串向量?
p.s. 结果这个函数只快了 6 倍 (( 我还以为至少会快 100 倍呢 ((((
你可以用 R(编译)编译代码。我的代码速度提高了近 3 倍。
用 foreach 代替 for,加载所有内核。
你可以编译 R 代码(编译)。我的代码速度几乎提高了 3 倍。
使用 foreach 代替 for,加载所有内核。
自R 3.4 起, 所有 R 代码都默认包含cmpfun 编译。
https://stackoverflow.com/questions/41502721/could-someone-explain-what-compiling-in-r-is-and-why-it-would-speed-up-this-c自R 3.4 起 ,cmpfun 编译 默认包含在所有 R 代码中
https:// stackoverflow.com/questions/41502721/could-someone-explain-what-compiling-in-r-is-and-why-it-would-speed-up-this-c这篇文章让我明白,现在它似乎总是在编译软件包,顺便说 一句,在更新软件包时可以看到,行字节编译并为软件包的懒加载做准备。
但我认为用户代码并未编译。我们通过源代码加载函数,但我在源代码的描述中并没有看到要加载的函数是经过编译的。
这篇文章让我明白,现在它似乎总是在编译软件包,顺便 可以看到在更新软件包时,行字节编译并为软件包的懒加载做准备。
但我认为用户代码是不会被编译的。我们通过源代码加载函数,但我在源代码描述中没有看到要加载的函数是经过编译的。
嗯,我会试试的
有一个问题:如何使 pat dat 输入变量既能接受数字向量(像现在这样),也能接受字符串向量?
重载的第一个想法是编写另一个同名但参数不同的函数。我从未在 Rcpp 中这样做过,所以不知道是否可行。我可能需要在一个单独的文件中编写 C 代码,并使用 sourceCpp() 代替 cppFunction()。