我正在尝试制作以下“序列”:
0.0025,0.005, 0.010, 0.015, 0.020, 0.025, 0.030, 0.035, 0.040, 0.045, 0.050, 0.055, 0.060
如您所见,在第一个值0.0025之后,值增加0.0025,然后连续增加0.005。因此,在第二个值0.005之后,它基本上是增加0.005的序列。我以为我可以使用seq()。
我认为可行的是:
matrix1 <- matrix("", nrow = 1, ncol = 13)
m <- for (i in 1:length(matrix1){
matrix1[,i] <- ifelse(i == 1, 0.0025, ifelse(i == 2, 0.005, seq(0.01, 0.05, by = 0.005)))
}
然而,这给了我以下结果:
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13]
[1,] "0.0025" "0.005" "0.01" "0.01" "0.01" "0.01" "0.01" "0.01" "0.01" "0.01" "0.01" "0.01" "0.01"
这不是我想要的。
有什么建议吗?
答案 0 :(得分:2)
如果问题实际上是关于使用for
循环,那么我宁愿使用if
和else
语句:
n <- 13
x1 <- vector("numeric", 13)
for (i in 1:n) {
if (i==1) {
x1[i] <- 0.0025
} else {
x1[i] <- 0.005 + (i-2)*0.005
}
}
...因为ifelse
意在应用于矢量:
j <- 1:n
x2 <- ifelse(j == 1, 0.0025, 0.005 + (j-2)*0.005)
但是有很多其他方法可以获得所需的结果!我最喜欢的是
x3 <- c(0.0025, seq(0.005, 0.06, by=0.005))
因为当你大声朗读它时,你真的会创建一个向量,其中“,在第一个值0.0025之后,值增加0.0025,然后连续增加0.005。”