【问题标题】:Double nested function in RR中的双重嵌套函数
【发布时间】:2021-04-12 13:07:15
【问题描述】:

我有以下代码:

 mdf[,c(4)]<- mdf$`CLAVE EMISORA` %in% BMV[[1]]$`CLAVE EMISORA`
 mdf[,c(5)]<- mdf$`CLAVE EMISORA` %in% BMV[[2]]$`CLAVE EMISORA`
 ...............................................................
 mdf[,c(13)]<- mdf$`CLAVE EMISORA` %in% BMV[[10]]$`CLAVE EMISORA`

它基本上对列的每一行的内容是否包含在列表内的数据框的列中进行逻辑测试。结果是对一系列列的逻辑测试,告诉我它包含在哪里,因为我已将第 4-13 列指定为每个列表中每一行是否存在的二分变量。但现在我想减少代码,而不是将结果映射到不同的列,我想使用具有级别 (1-10) 的单个列,其中每个级别都等于 i 列表。 我尝试过使用嵌套的 for 循环,但它不起作用。

for (i in mdf$`CLAVE EMISORA`){
  for (x in 1:10)
  if (mdf$`CLAVE EMISORA` %in% BMV[[x]]$`CLAVE EMISORA`)
    mdf$`SECTOR` <- x
  }

示例数据库:

   `CLAVE EMISORA` `RAZON SOCIAL`                            SECTOR
   <chr>           <chr>                                     <lgl> 
 1 AC              ARCA CONTINENTAL, S.A.B. DE C.V.          NA    
 2 ACCELSA         ACCEL, S.A.B. DE C.V.                     NA    
 3 ACTINVR         CORPORACION ACTINVER, S.A.B. DE C.V.      NA    
 4 AEROMEX         GRUPO AEROMÉXICO, S.A.B. DE C.V.          NA    
 5 AGRIEXP         AGRO INDUSTRIAL EXPORTADORA, S.A. DE C.V. NA    
 6 AGUA            GRUPO ROTOPLAS, S.A.B. DE C.V.            NA    
 7 AHMSA           ALTOS HORNOS DE MEXICO, S.A. DE C.V.      NA    
 8 ALEATIC         ALEATICA, S.A.B. DE C.V.                  NA    
 9 ALFA            ALFA, S.A.B. DE C.V.                      NA    
10 ALPEK           ALPEK, S.A.B. DE C.V.                     NA   

示例列表

CLAVE EMISORA RAZON SOCIAL
1   3391      TSURUHA HOLDINGS, INC.
2   4911      SHISEIDO COMPANY, LIMITED
3   ABEV      AMBEV S.A.
4   AC        ARCA CONTINENTAL, S.A.B. DE C.V.
5   ACBE      AC BEBIDAS, S. DE R.L. DE C.V.

【问题讨论】:

    标签: r logical-operators nested-for-loop


    【解决方案1】:

    看起来你想要的只是像这样简单地迭代你的 10 个索引并执行你的操作。

    for (i in 1:10) {
        mdf[,i + 3]<- mdf$`CLAVE EMISORA` %in% BMV[[i]]$`CLAVE EMISORA`
    }
    

    如果你愿意的话,你可以用一些程序化的方式来替换 i+3 以获得更好的列名。

    【讨论】:

    • 我的天...我居然写了一个类似的sn-p除了昏迷,这让我很郁闷。
    猜你喜欢
    • 2013-12-28
    • 2019-05-21
    • 1970-01-01
    • 2022-12-14
    • 1970-01-01
    • 2023-03-11
    • 2021-02-12
    • 2020-07-04
    • 2015-11-06
    相关资源
    最近更新 更多