我试图创建一个函数,它取前n个奇数的总和,即从i = 1到n的总和(2i-1)。
我在使用仅输出第n个术语的for循环时出现问题
n <-2
for (i in 1:n)
{
y<-((2*i)-1)
}
y
答案 0 :(得分:5)
在R编程中,我们尝试避免循环
cumsum ( seq(1,2*n, by=2) )
如果你不想要一系列的部分和,只需使用'sum'。
答案 1 :(得分:3)
这里实际上不需要使用循环或构造前n个奇数的序列 - 这是一个算术系列,所以我们知道封闭形式的前n个元素的总和:
sum.first.n.odd <- function(n) n^2
sum.first.n.odd(1)
[1] 1
sum.first.n.odd(2)
[1] 4
sum.first.n.odd(100)
[1] 10000
这比基于for
或sum
的任何解决方案都更有效,因为它永远不会计算序列的元素。
[[看到标题 - OP显然知道分析结果并想要其他东西......]]
答案 2 :(得分:2)
试试这个:
sum=0
n=2
for(i in seq(1,2*n,2)){
sum=sum+i
}
但是,当然,使用循环时R很慢。这就是人们应该避免它们的原因。