因此,对于我目前正在进行的数据评估,我想使用"for"循环编写矩阵.
假设我有0到100之间的随机数:
E <- runif(100, 0, 100)
t <- 0 #start
for(t in 0:90) {
D <- length(E[E >= t, E < (t + 10)])
t = t + 10
}
Run Code Online (Sandbox Code Playgroud)
所以我想要做的是在每次迭代时将"D"写入矩阵,其中"t"在一列中,"D"在另一列中.
我听说你应该避免R中的循环,但我不知道另一种选择.
您可以执行此sapply操作,而不是使用循环,该操作对序列中的每个项目进行操作并将结果存储在向量中,然后cbind创建矩阵:
E <- runif(100, 0, 100)
t <- seq(0, 90, 10)
D <- sapply(t, function(ti) {
sum(E >= ti & E < (ti + 10))
})
cbind(t, D)
#> t D
#> [1,] 0 11
#> [2,] 10 12
#> [3,] 20 14
#> [4,] 30 11
#> [5,] 40 9
#> [6,] 50 12
#> [7,] 60 7
#> [8,] 70 7
#> [9,] 80 6
#> [10,] 90 11
Run Code Online (Sandbox Code Playgroud)
请注意,我也使用sum(E >= ti & E < (ti + 10))而不是length(length(E[E >= ti & E < (ti + 10)])),作为一个稍微短一点的方法来查找E大于t但小于的项目数t + 10.