我无法弄清楚滤波器功能如何如此快速地工作.我已经对所有类型的数据使用过滤器,无论数据类型如何,Filter都会删除我使用的任何替代方法.我经常使用二进制搜索算法和Stephen Bullen编写的QuickArraySort算法(在专业Excel开发中找到).二进制搜索是快速的(与Filter函数一样快,因为数组已经排序),Quick Sort算法是已知最快的排序算法之一.
我在下面编写了一些测试代码,比较了在一个非常大的数组中查找随机元素的速度(大小= 2,000,000).我故意以无序的方式填充数组(应该注意我已经尝试了各种无序的分配方法,并且无论分配方法如何,结果都是相似的).
Sub SearchTest()
Dim i As Long, strMyArray() As String, lngSize As Long, strTest As String
Dim TimeBinarySearch As Long, TimeFilterSearch As Long
Dim lngResultBinary As Long, lngResultFilter As Long
Dim StartHour As Long, StartMinute As Long, StartSecond As Long
Dim StartMiliSecond As Long, StartTime As Long
Dim EndHour As Long, EndMinute As Long, EndSecond As Long
Dim EndMiliSecond As Long, EndTime As Long
lngSize = 2000000
strTest = CStr(1735674 * 987)
ReDim strMyArray(lngSize) …Run Code Online (Sandbox Code Playgroud) 我正在运行具有 8GB RAM、Debian 9、R 版本 3.3 的虚拟机。
我有这个 R 脚本。
install.packages("Rcpp")
Run Code Online (Sandbox Code Playgroud)
我的机器给了我这个错误。
* installing *source* package ‘Rcpp’ ...
** package ‘Rcpp’ successfully unpacked and MD5 sums checked
** libs
g++ -I/usr/share/R/include -DNDEBUG -I../inst/include/ -fpic -g -O2 -fdebug-prefix-map=/build/r-base-3.3.3=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -g -c api.cpp -o api.o
In file included from ../inst/include/RcppCommon.h:135:0,
from ../inst/include/Rcpp.h:27,
from api.cpp:24:
../inst/include/Rcpp/lang.h: In function ‘SEXPREC* Rcpp::Rcpp_list7(SEXP, SEXP, SEXP, SEXP, SEXP, SEXP, SEXP)’:
../inst/include/Rcpp/lang.h:45:55: error: ‘Rf_list6’ was not declared in this scope
x0 = Rf_cons(x0, Rcpp_list6(x1, …Run Code Online (Sandbox Code Playgroud) 我试图在 R 中找到所有可能的独特组合。似乎有很多类似的问题被问到,但我找不到相同的问题。
我的问题是从向量 x 中找到 m 个元素的组合,但 m 可能大于 x。例如,从字母 [1:2] 中选取 3 个元素,希望可以返回:
combn(letters[1:2],3)
[,1] [,2] [,3] [,4]
[1,] "a" "a" "a" "b"
[2,] "a" "a" "b" "b"
[3,] "a" "b" "b" "b"
Run Code Online (Sandbox Code Playgroud)
但是组合函数 n < m 中的错误。有类似的功能,包括 gtools:permutations、expand.grid。
如果之前有人问过同样的问题,但我没有听懂,再次道歉。谢谢。
我正在寻找一组数字,并旨在通过集合分区将它们分成子集。如何生成这些子集的决定因素是确保子集中所有元素的总和尽可能接近由预定分布生成的数字。子集的大小不必相同,每个元素只能在一个子集中。我之前已经通过贪心算法(链接在这里)获得了关于这个问题的指导,但我发现集合中的一些较大的数字大大扭曲了结果。因此,我想对这个问题使用某种形式的集合分区。
一个更深层次的潜在问题,我真的很想纠正未来的问题,我发现我被这些类型问题的“蛮力”方法所吸引。(正如您从我下面的代码中看到的,该代码尝试使用折叠通过“蛮力”来解决问题)。这显然是一种完全低效的解决问题的方法,所以我想用更智能的方法来解决这些最小化类型的问题。因此,非常感谢任何建议。
library(groupdata2)
library(dplyr)
set.seed(345)
j <- runif(500,0,10000000)
dist <- c(.3,.2,.1,.05,.065,.185,.1)
s_diff <- 9999999999
for (i in 1:100) {
x <- fold(j, k = length(dist), method = "n_rand")
if (abs(sum(j) * dist[1] - sum(j[which(x$.folds==1)])) < abs(s_diff)) {
s_diff <- abs(sum(j) * dist[1] - sum(j[which(x$.folds==1)]))
x_fin <- x
}
}
Run Code Online (Sandbox Code Playgroud)
这只是一个仅查看第一个“子集”的简化版本。s_diff将是模拟的理论和实际结果之间的最小差异,并且x_fin是每个元素将在哪个子集中(即它对应于哪个折叠)。然后我想删除落入第一个子集的元素并从那里继续,但我知道我的方法效率低下。
提前致谢!
我有一个 smol Discord bot(使用 discord.js-commando),我有这个代码:
var activevar = ["with the &help command.", "with the developers console", "with some code", "with JavaScript"];
var activities = activevar[Math.floor(Math.random()*activevar.length)];
client.on('ready', () => {
client.user.setActivity(activities);
}
Run Code Online (Sandbox Code Playgroud)
但这只有在我重新启动机器人时才会改变它。有人可以帮我吗?
我正在尝试计算具有重复字符的给定排列的词典排名。
我发现的所有示例似乎都涉及根据输入字符串的字谜词查找给定输入字符串的词典排名(与任意字符集相对)
A,B,CBAA注意C不包含在输入中)3字符组合的最大长度...还必须包括 1 和 2 个字符组合)假设我有6个数字:
a <- c(1,2,3,4,5,6)
Run Code Online (Sandbox Code Playgroud)
我想列出这6个数字的所有可能的3位数组合,包括重复.
期望的结果如下所示:
1 1 1
1 2 3
1 2 4
...
Run Code Online (Sandbox Code Playgroud)
我不想包含具有相同3个数字但顺序不同的元素:
例如
1 2 3
3 2 1
Run Code Online (Sandbox Code Playgroud)
应排除其中一个
在处理 Rcpp 程序时,我使用了 sample() 函数,这给了我以下错误:“概率不允许 NA。” 我将这个问题追溯到我使用的概率向量中包含 NA 值的事实。我不知道如何。下面是一些捕获错误的 R 代码:
n.0=20
n.1=20
n.reps=1
beta0.vals=rep(seq(-.3,.1,,n.0),n.reps)
beta1.vals=rep(seq(-7,0,,n.1),n.reps)
beta.grd=as.matrix(expand.grid(beta0.vals,beta1.vals))
n.rnd=200
beta.rnd.grd=cbind(runif(n.rnd,min(beta0.vals),max(beta0.vals)),runif(n.rnd,min(beta1.vals),max(beta1.vals)))
beta.grd=rbind(beta.grd,beta.rnd.grd)
N = 22670
count = 0
for(i in 1:dim(beta.grd)[1]){ # iterate through 600 possible beta values in beta grid
beta.ind = 0 # indicator for current pair of beta values
for(j in 1:N){ # iterate through all possible Nsums
logit = beta.grd[i,1]/N*(j - .1*N)^2 + beta.grd[i,2];
phi01 = exp(logit)/(1 + exp(logit))
if(is.na(phi01)){
count = count + 1
}
}
} …Run Code Online (Sandbox Code Playgroud) 我需要一个类似于expand.grid但没有重复元素组合的函数。
这是我的问题的简化版本。
X1 = c("x","y","z")
X2 = c("A","B","C")
X3 = c("y","C","G")
d <- expand.grid(X1,X2,X3)
d
Var1 Var2 Var3
1 x A y
2 y A y
3 z A y
4 x B y
. . . .
. . . .
. . . .
23 y B G
24 z B G
25 x C G
26 y C G
27 z C G
Run Code Online (Sandbox Code Playgroud)
d有 27 行。但其中 6 个包含我不需要的重复值行:2、5、8、16、17 和 18
有没有办法获取不包含任何重复项的其他 21 行。
请注意,向量的元素数量超过 …
r ×6
algorithm ×3
combinations ×3
arrays ×1
combn ×1
discord ×1
discord.js ×1
excel ×1
math ×1
missing-data ×1
partitioning ×1
permutation ×1
probability ×1
rcpp ×1
sorting ×1
vba ×1