嵌套循环遍历R中的不同列表

时间:2018-07-06 11:04:16

标签: r arraylist nested-loops

我有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 :(得分:0)

您没有使用{ 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))