gpt4 book ai didi

r - 不能被多个数整除的整数

转载 作者:行者123 更新时间:2023-12-05 01:25:43 25 4
gpt4 key购买 nike

我正在尝试打印一个向量,其中包含 1 到 100 之间的整数,这些整数不能被 R 中的 2、3 和 7 整除。

我尝试了 seq 但我不确定如何继续。

最佳答案

另一种选择是使用 Filter过滤满足您条件的任何数字的序列:

Filter(function(i) { all(i %% c(2,3,7) != 0) }, seq(100))
## [1] 1 5 11 13 17 19 23 25 29 31 37 41 43 47 53 55 59 61 65 67 71 73 79 83 85 89 95 97

请注意,虽然这可能 (IMO) 是最可读的,但它在性能方面是最差的(到目前为止):

已更新以考虑 rawr 的 for 循环解决方案:

microbenchmark(
filter={ v1 <- seq(100); Filter(function(i) { all(i %% c(2,3,7) != 0) }, v1) },
reduce={ v1 <- seq(100); v1[!Reduce(`|`,lapply(c(2,3,7), function(x) !(v1 %%x)))] },
rowout={ v1 <- seq(100); v1[rowSums(outer(v1, c(2, 3, 7), "%%") == 0) == 0] },
looopy={ v1 <- seq(100); for (ii in c(2,3,7)) v1 <- v1[-which(v1 %% ii == 0)]; v1 },
times=1000
)

## Unit: microseconds
## expr min lq mean median uq max neval cld
## filter 108.280 118.7000 143.88592 126.2155 136.6290 2349.952 1000 c
## reduce 21.552 23.8095 25.91997 24.8150 25.8580 144.067 1000 ab
## rowout 26.075 28.4920 31.11812 29.5350 31.2125 184.225 1000 b
## looopy 14.149 16.0765 18.11806 16.8995 17.8595 160.485 1000 a

为了公平起见,我为所有这些添加了序列生成(而且,我这样做是为了比较相对性能与实际速度,所以比较结果仍然有效)。

声明原文:

“不出所料,akrun 是最优的 :-)”

现在被取代:

“不出所料,rawr 是最优的 :-)”

关于r - 不能被多个数整除的整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33188726/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com