gpt4 book ai didi

R 函数生成不正确的结果

转载 作者:行者123 更新时间:2023-12-01 09:28:26 24 4
gpt4 key购买 nike

我正在尝试更好地使用 R 中的函数,并且正在开发一个函数来提取 100 到 500 之间可被 3 整除的每个奇数。我已经接近了下面的函数。它始终正确返回所有值,但它也包含序列中的第一个数字 (101),而实际上它不应该包含在内。任何帮助将不胜感激。我写的代码如下:

Test=function(n){
if(n>100){
s=seq(from=101,to=n,by=2)
p=c()
for(i in seq(from=101,to=n,by=2)){
if(any(s==i)){
p=c(p,i)
s=c(s[(s%%3)==0],i)
}}
return (p)}else{
stop
}}
Test(500)

最佳答案

这是一个获取 3 的所有非偶数倍的函数。它是完全矢量化的,根本没有循环。

  1. 检查n是否在[100, 500]范围内。
  2. 创建一个从 100n 的整数向量 N
  3. 创建可被 3 整除但不能被 2 整除的 N 元素的逻辑索引。
  4. 提取 N 中与索引 i 匹配的元素。

主要工作是在 3 行代码中完成的。

Test <- function(n){
stopifnot(n >= 100)
stopifnot(n <= 500)
N <- seq_len(n)[-(1:99)]
i <- ((N %% 3) == 0) & ((N %% 2) != 0)
N[i]
}

Test(500)

关于R 函数生成不正确的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59807886/

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