Вложенный цикл по различным спискам в R - PullRequest
0 голосов
/ 06 июля 2018

У меня есть 5 списков длиной 10, d1,...,d5.
например, d1:

> d1
[[1]]
 [1] -0.4470862 -7.2330362  2.0060165 -1.8135874 -6.3239906 -9.2819973 -4.5281328 -0.4646620 -3.6033140 -8.4078084

[[2]]
 [1]  0.8860549 -5.5916677  4.3382399 -5.6031842 -7.1132885  1.8388706  5.3161508 12.9872906 10.9063864 -2.7285185

[[3]]
 [1]  1.7715003 -5.3555033  6.7489209  8.6213950 -2.1861336  8.8199678  6.3897033 -8.7263417  0.4513869  3.7055572

[[4]]
 [1]  -6.4443679  -7.8786053   1.2553411  -9.4590218  -3.3743598 -14.6997473 -11.4365114  -0.3903306  -0.6343901   0.1218937

[[5]]
 [1]  -7.1302642  11.2561616   7.9592310  -0.9878423   0.2744908   2.2974143  -2.5867071  -9.6975011 -10.9544252   5.3961757

[[6]]
 [1] -12.4285771   1.9922676  -2.6495977   2.3891633  -4.0980340 -15.3845265  -4.8952363  -3.0497065  -0.6652166  -0.7398617

[[7]]
 [1]  -1.4175504 -11.3625955  -6.2915938  -7.5563334   0.7397468  -7.4810663  -1.2341943  -5.1838253   2.4293057   2.1604598

[[8]]
 [1]  -8.9740261  -3.8747773  -8.4827669  -2.6074740 -16.5657409  -0.6334476 -10.2824297 -13.6752398  -1.8896523   5.5975585

[[9]]
 [1]  -2.7644181  -4.4193104  -3.0591752 -11.0800374  -0.2166242   7.6568081  10.2937062   0.8078439  -5.6475922   0.1152055

[[10]]
 [1]  -4.2258527  -3.7496935  -7.4994027   2.4172585  -0.9224533   3.7842335  -5.0711585 -10.5714328  -1.4858401  -1.3034318

Я хочу сравнить элементы этого списка с некоторыми константами c1,...,c5 и присвоить результат другому списку.
Это код:

result<-list()
for(i in 1:10){for (j in 1:10)
  if (d1[[i]][j]>=c1 | d2[[i]][j]>=c2| d3[[i]][j]>=c3 | d4[[i]][j]>=c4| d5[[i]][j]>=c5) 
  { result[[i]][j]==TRUE}}

Но я получаю этот результат:

> result
list()

Пожалуйста, помогите мне изменить код.

1 Ответ

0 голосов
/ 06 июля 2018

Вы ничего не назначаете с { result[[i]][j]==TRUE}}. Вам не нужно { result[[i]][j]=TRUE}} или { result[[i]][j] <- TRUE}}?

ОБНОВЛЕНИЕ: возможно, в первый раз ваши условия выполняются, когда i = 3 и j = 5, например. Пустой список еще ничего не содержит, поэтому он не может назначить что-либо в 3-й вложенный список и его 5-й элемент. Вы можете создать «целевой» список раньше и заполнить его NA, как это, и запустить цикл for впоследствии:

result <- list(rep(NA,10),rep(NA,10),rep(NA,10),rep(NA,10),rep(NA,10),rep(NA,10),rep(NA,10),rep(NA,10),rep(NA,10),rep(NA,10))

...