gpt4 book ai didi

传入函数后返回向量中的值

转载 作者:行者123 更新时间:2023-12-04 11:02:08 26 4
gpt4 key购买 nike

基本上,我有
x<-rnorm(5) .

我写了一个接受整数的向量 1 <= n <= 5然后在向量中返回系列 (1/n) * sum_{i=1}^n (1/x_i) 的结果

所以

 n=1 -> 1   * 1/x_1
n=2 -> (1/2) * ( 1/(x_1 + x_2) )
n=3 -> (1/3) * ( 1/(x_1 + x_2 + x_3) )
n=4 -> (1/4) * ( 1/(x_1 + x_2 + x_3 + x_4) )

我写了这个函数:
 series <-  function(n){
n=seq(1,5,1)
x<-rnorm(length(n))
print(x)
return ( (1/n)* (1/sum(x[1:length(x[n])])) )
}

但结果不是真的,例如
 > series(5)
[1] 1.17810059 0.85472777 -0.55077392 -0.03856963 -0.19404827
[1] 0.8003608 0.4001804 0.2667869 0.2000902 0.1600722

n=2 -> 1/2 * 1/x_1 + 1/x_2 = (1/2) * (1/(1.17810059+ 0.85472777))但不幸的是,根据我的代码,结果是 0.4001804 !

P.S:我想写没有循环的代码,没有任何函数需要调用库!只是使用 R 中的基本已知函数定义一个简单的函数,然后我可以保存结果,如果需要使用 Vectorize()outer()

最佳答案

sum()函数未矢量化。它将所有内容折叠为一个值。相反,您可以使用 cumsum()获得迄今为止向量中所有值的累积值。

series <-  function(n){
n <- seq(1,5,1)
x <- rnorm(length(n))
print(x)
return((1/n)* (1/cumsum(x)))
}

关于传入函数后返回向量中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58738048/

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