我习惯用C ++和Java编程,但我是R编程的新手。我只想要这个嵌套的实现这个公式
我的第一个想法是使用嵌套for循环。但有些人建议我在R编程中避免嵌套for循环并找到功能方法。
所以我试着用这种方式
j <- seq(2,99)
k <- seq(j, 100)
answer <- sum(k)
answer
但是上面的代码会出现此错误消息
Error in seq.default(j, 100) : 'from' must be of length 1
Calls: seq -> seq.default
我该如何解决这个问题?
答案 0 :(得分:2)
seq
参数未进行矢量化。因此,遍历它以获得list
vector
s,unlist
,然后获取sum
sum(unlist(lapply(j, function(.j) seq(.j, 100))))
或致电Vectorize
,致电lapply
sum(unlist(Vectorize(function(x) seq(x, 100))(j)))
答案 1 :(得分:1)
如果您想坚持使用for
循环解决方案,您可以执行以下操作:
j <- seq(2,99)
sums <- vector(length = length(j))
for (k in j){
sums[k-1] = sum(seq(k,100))
}
answer <- sum(sums)