簡體   English   中英

我是 r 的新手。我試圖通過使用 for 循環使我的代碼不那么復雜

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM