[英]I am trying to create a Collatz sequence with while loop in R. What am i doing wrong in this while loop here?
[英]I am new to r. I am trying to make my code less complicated by using a for loop
這是我當前的代碼...我可以將其設為 for 循環嗎?
#sample1, sample2, …, sample6 where samplei is sampling 10^(ith)
sample1 <- abs(rnorm(10)) #use abs because bellcurve is + and -
sample2 <- abs(rnorm(10^2))
sample3 <- abs(rnorm(10^3))
sample <- abs(rnorm(10^4))
sample5 <- abs(rnorm(10^5))
sample6 <- abs(rnorm(10^6))
R 非常擅長矢量化,這意味着幾乎任何時候您嘗試使用 for 循環,都有更好/更快的方法來實現。 我會將您的示例重寫為:
samples <- abs(rnorm(10^seq(6)))
然后每個樣本都可以作為samples[1]
等訪問。
如果您還想將其分配給 6 個不同的變量,您需要執行以下操作:
n = 6
invisible(sapply(1:n, function(i) assign(x = paste("sample", i, sep = ""),
value = abs(rnorm(10^i)),
envir = .GlobalEnv)))
或者使用 for 循環:
for(i in 1:n)
{
assign(x = paste("sample", i, sep = ""), value = abs(rnorm(10^i)), envir = .GlobalEnv)
}
但將其存儲為列表更有意義,例如:
samples = lapply(1:6, function(i) abs(rnorm(10^i)))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.