[英]Double for-loop issues in R
我正在嘗試運行雙循環並運行不同的回歸模型。 (我保存每個回歸的結果並用它來交叉驗證,但這不是我的問題。)
我的代碼如下:
hr <- seq(50)
# testing ranges:
for (j in 1:10) {
begin <- (25 - j)
for (k in 1:10) {
end <- (25 + k)
# dummies
z <- as.factor(ifelse(hr>=begin & hr<=end, hr, NA))
z2 <- ifelse(begin==end, NA, z) #this is the problematic part
# regression here.....
# save results here....
}
}
我創建變量開始和結束。 當 hr 在開始和結束之間時,如果不是 NA,則它們會得到值 hr。 這工作正常。 我的問題是下一個喜歡。 如果 begin==end,我希望所有的值都是 NA。 這不起作用。 即使begin~=end,它也會給我一個NA變量。 我究竟做錯了什么?
這是一個沒有循環的選項。 相反,我們expand_grid
來獲取 j 和 k 的每個組合。 然后我們計算開始和結束。 最后,我們將您的條件語句映射到嵌套向量上。 結果保存在名為hr
的列中,該列是向量列表。 這里的優點是您可以在數據框中map
回歸map
,這應該可以節省您的時間和組織。
library(tidyverse)
hr <- seq(50)
output <- expand_grid(j=1:10, k = 1:10) %>%
mutate(begin = (25 - j),
end = (25 + k),
hr = list(hr),
hr = pmap(list(begin, end, hr),
~case_when(
..1 == ..2 ~ ..3*NA,
..3>=..1 & ..3<=..2 ~ ..3,
T ~ NA_integer_
)))
output
#> # A tibble: 100 x 5
#> j k begin end hr
#> <int> <int> <dbl> <dbl> <list>
#> 1 1 1 24 26 <int [50]>
#> 2 1 2 24 27 <int [50]>
#> 3 1 3 24 28 <int [50]>
#> 4 1 4 24 29 <int [50]>
#> 5 1 5 24 30 <int [50]>
#> 6 1 6 24 31 <int [50]>
#> 7 1 7 24 32 <int [50]>
#> 8 1 8 24 33 <int [50]>
#> 9 1 9 24 34 <int [50]>
#> 10 1 10 24 35 <int [50]>
#> # … with 90 more rows
#first 5 vectors to show it worked
output$hr[1:5]
#> [[1]]
#> [1] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 24 25
#> [26] 26 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
#>
#> [[2]]
#> [1] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 24 25
#> [26] 26 27 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
#>
#> [[3]]
#> [1] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 24 25
#> [26] 26 27 28 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
#>
#> [[4]]
#> [1] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 24 25
#> [26] 26 27 28 29 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
#>
#> [[5]]
#> [1] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 24 25
#> [26] 26 27 28 29 30 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.