您在length(x)
前錯過了1:
(即從1到1 x的長度)。您的代碼應該是這樣的:
x<- 1:1000
samp <- matrix(NA, ncol = 1, nrow = 1000)
for(i in 1:length(x)){
samp[i,] <- sum(sample(x,5,replace = TRUE))}
偉大的工程:
> str(samp)
int [1:1000, 1] 2715 2312 3180 1364 2851 2429 2888 2381 2772 2317 ...
此外,for-loops
有被R中緩慢的一個不好的名聲,所以你可能要考慮循環像使用其他的方法C++
方式與(例如)replicate
這樣的:
定義函數:
myfunc <- function(x) {
sum(sample(x,5,replace = TRUE))
}
,然後用它是這樣的:
x <- 1:1000
mymat <- matrix(replicate(1000, myfunc(x)), ncol=1)
> str(mymat)
int [1:1000, 1] 2481 2236 2492 1759 1905 3243 2606 2624 3013 2309 ...
這個偉大的工程!也感謝功能的想法:) – user3919708
真的很高興我可以幫忙:) – LyzandeR