作为练习的一部分,我应该编写一个替换R中seq()
命令的函数。
我设法做了一个类似的工作:
seq2 <- function(a,r,n){ #a is the starting number, r is the increment, n is the length out
i <- a
k <- 1
repeat{
print(i)
i<-i+r
k=k+1
if(k>n)
break
}
}
然而,输出并不是我想要的。例如,在调用seq()
命令时,如下所示:
seq(10,by=5,lenght.out=15)
输出
[1] 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80
而我的代码有这个输出:
seq2(10,5,15)
[1] 10
[1] 15
[1] 20
[1] 25
[1] 30
[1] 35
[1] 40
[1] 45
[1] 50
[1] 55
[1] 60
[1] 65
[1] 70
[1] 75
[1] 80
那么有没有办法调整我的代码,使其产生与seq()
命令相同的输出?
由于
答案 0 :(得分:1)
您可以在函数中创建一个新向量,并在结尾处返回该向量:
seq2 <- function(a,r,n){ #a is the starting number, r is the increment, n is the length out
i <- a
k <- 1
out = c()
repeat{
out = c(out,i)
i<-i+r
k=k+1
if(k>n)
break
}
return(out)
}