2017-05-06 19 views
1

我想写一个函数来求和分数。 x是分子和n最大的x。我想对x/c的所有分数进行求和,如果c = x+1和如果c == y停止。R中分数之和的函数

例如,如果x = 1y = 4

1/1 + 1/2 + 1/3 + 1/4 = 2.083333 

或者,如果x = 2y = 5

2/1 + 2/2 + 2/3 + 2/4 + 2/5 = 4.566667 

我尝试了,而循环,但我认为这是不差得远:

score <- function(x, y){ 
    while (c < y){ 
    c <- x/1 
    c <- x/c+1 
    } 
} 
+0

获得幻想和回答为分数:'评分< - 函数(X,Y){MASS ::馏分(总和(X/seq.int(Y)))}' – alistaire

回答

2

编辑:尽可能避免在R中出现环路。

f <- function(x,y) x * sum(1/(1:y)) 
+0

这是令人误解。你可以使用循环,对于简单的程序应该避免使用循环 – Val

+0

对于初学者来说,一个好的经验法则就是不要在R中使用循环。特别是在循环大型数据集时应避免使用循环。但是,我同意循环有时可能会正常。 – Tbar

+0

再次不同意,取决于您的任务,您可能必须使用循环。无论如何,你的答案中的陈述是错误的 – Val