【问题标题】:Changing column names in list over for loop在 for 循环中更改列表中的列名
【发布时间】:2021-03-15 10:32:37
【问题描述】:

我正在尝试使用for-loop 更改相对于以下名称的列名,但是,我似乎无法做到正确。因此,我非常感谢您对我的方法的支持:

for(i in 1:15){
  names(test.enc[[i]])[2] <- c("enc_evergreen_needleleaf",  
"enc_evergreen_broadleaf",  
"enc_deciduous_needleleaf",  
"enc_deciduous_broadleaf",  
"enc_mixed_forest",  
"enc_closed_shrubland",  
"enc_open_shrubland",  
"enc_woody_savanna",  
"enc_savanna",  
"enc_grassland",  
"enc_wetland",  
"enc_cropland",  
"enc_urban",  
"enc_mosaic",  
"enc_barren")
}

但是,它将所有名称更改为第一个存储值enc_evergreen_broadleaf,如何做到这一点,以便每个列名获得连接序列中的下一个单词?

可重现的代码:

list(structure(list(layer = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 
11, 12, 13, 14, 15, 16, 17), encounter_rate = c(0.0168327818172984, 
0.0245526278078456, 0.0243779845525292, 0.00958441728108318, 
0.0135694997972973, 0.0217458355, 0.0243017425347303, 0.0283231869863014, 
0.0297109945836134, 0.0207063315181945, 0.0257609335769293, 0.0251487967356828, 
0.0285208063526021, 0.0213275492944468, 0.0247946677520666, 0.0279869491599538, 
0.0229709450323356)), row.names = c(NA, -17L), class = "data.frame"), 
    structure(list(layer = c(7, 11, 12, 13, 14, 15, 16, 17), 
        encounter_rate = c(0.0232986892474108, 0.029106514197793, 
        0.0423485148880614, 0.0278810399372792, 0.0189974225113402, 
        0.0263992402670516, 0.0260114284210526, 0.0316642657775499
        )), row.names = c(NA, -8L), class = "data.frame"), structure(list(
        layer = c(1, 2, 3, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 
        17), encounter_rate = c(0.0224730632077946, 0.0272254714759945, 
        0.0179234332099727, 0.0233360434693878, 0.0289772211061947, 
        0.0279319832599034, 0.0240684032409326, 0.0193554670384615, 
        0.0279649463078261, 0.0269396070886525, 0.0185719102763596, 
        0.018542528637931, 0.012709947072028, 0.04239139)), row.names = c(NA, 
    -14L), class = "data.frame"), structure(list(layer = c(1, 
    2, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17), encounter_rate = c(0.0237555990295715, 
    0.0250673634976813, 0.0215182227341075, 0.00714736670909091, 
    0.0290969429050279, 0.0267860332636672, 0.0270534621613419, 
    0.026721714630264, 0.0238709596184027, 0.0249074332489268, 
    0.0304618992970835, 0.0260209517100003, 0.015865886959611, 
    0.0243338004003074, 0.0201179804026253, 0.0332228978795843
    )), row.names = c(NA, -16L), class = "data.frame"), structure(list(
        layer = c(1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 
        15, 16, 17), encounter_rate = c(0.0205357761652226, 0.0241299700965417, 
        0.0225027270827694, 0.00985684546268657, 0.0311072087096774, 
        0.0252826755994332, 0.0271736973582555, 0.0283303792425047, 
        0.0229465085587453, 0.0262387189000513, 0.0349808141373789, 
        0.0269785067137574, 0.0178032039611502, 0.0251414066142756, 
        0.0237955553523809, 0.0349799640745083)), row.names = c(NA, 
    -16L), class = "data.frame"), structure(list(layer = c(3, 
    5, 6, 7, 10, 11, 13, 14, 15, 16, 17), encounter_rate = c(0.005861055, 
    0.0247702364814815, 0.0217156349945235, 0.0266147094731707, 
    0.0273557187764706, 0.02247895109375, 0.0314803993053339, 
    0.0199688156521739, 0.0250040668072976, 0.024064520016, 0.0289086554672578
    )), row.names = c(NA, -11L), class = "data.frame"), structure(list(
        layer = c(1, 2, 5, 6, 7, 10, 13, 15, 16, 17), encounter_rate = c(0.0239835098420742, 
        0.0196024526993901, 0.0275470745648515, 0.0205289891038188, 
        0.0252871031854839, 0.0225145242857143, 0.0277447744846797, 
        0.0273150363541667, 0.0372795540909091, 0.0258269711946903
        )), row.names = c(NA, -10L), class = "data.frame"), structure(list(
        layer = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 
        14, 15, 16, 17), encounter_rate = c(0.0234895073226773, 
        0.0254242177795502, 0.0222844341348828, 0.010322404308595, 
        0.0115202866290984, 0.022858064298995, 0.0261324981159272, 
        0.0269339113300467, 0.0272905667936239, 0.0243445938197004, 
        0.0263085547098274, 0.031577225982848, 0.027366790080755, 
        0.0170917603078201, 0.0245166202483043, 0.0230437328068511, 
        0.0302480713824274)), row.names = c(NA, -17L), class = "data.frame"), 
    structure(list(layer = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 
    12, 13, 14, 15, 16, 17), encounter_rate = c(0.024511496338631, 
    0.0263438531740197, 0.0230784856467449, 0.0103841481938194, 
    0.0112631119225057, 0.0218656878147517, 0.0263293450194207, 
    0.0272377655722272, 0.0277590005710358, 0.0248185191981168, 
    0.0264710300465011, 0.0311785029047626, 0.027764701873438, 
    0.018296641767007, 0.0243240673465086, 0.0269793925823536, 
    0.0261431798468939)), row.names = c(NA, -17L), class = "data.frame"), 
    structure(list(layer = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 
    12, 13, 14, 15, 16, 17), encounter_rate = c(0.0241048000322165, 
    0.0257675668336232, 0.0223383845545, 0.0189068612261722, 
    0.0261390898788855, 0.0261454176785369, 0.0262590636755884, 
    0.0273476886308152, 0.0282016510452861, 0.0249749584240885, 
    0.0269017127896855, 0.0309276372122874, 0.0280081024050942, 
    0.0171571967814629, 0.024706397187938, 0.0229732030207295, 
    0.0271717635000233)), row.names = c(NA, -17L), class = "data.frame"), 
    structure(list(layer = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 
    12, 13, 14, 15, 16, 17), encounter_rate = c(0.0261045398315745, 
    0.0270077896857178, 0.0228967718773374, 0.0199122837701645, 
    0.0227976864969644, 0.0275306004374101, 0.0271334525693991, 
    0.0285065610334257, 0.0281986960454696, 0.0235630515843985, 
    0.0235566291662858, 0.0272662707441063, 0.0242547847851237, 
    0.020220947639907, 0.0229653844016148, 0.0189523223219292, 
    0.016330738598504)), row.names = c(NA, -17L), class = "data.frame"), 
    structure(list(layer = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 
    12, 13, 14, 15, 16, 17), encounter_rate = c(0.0247481645364914, 
    0.0269929124824351, 0.0233212451104437, 0.0209935752243073, 
    0.027662987546265, 0.0267526016850953, 0.0264659030703554, 
    0.0276911097027454, 0.027704723980107, 0.0258298011360007, 
    0.0293761963259958, 0.0304401704151498, 0.0297272977127787, 
    0.0191320152910558, 0.022300483848187, 0.0310418860633282, 
    0.0194552407910497)), row.names = c(NA, -17L), class = "data.frame"), 
    structure(list(layer = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 
    12, 13, 14, 15, 16, 17), encounter_rate = c(0.0250541999489398, 
    0.0249789151674128, 0.0219325183761915, 0.0174050192638298, 
    0.0198481538465096, 0.0273040101927991, 0.0261348274108392, 
    0.0274315478205557, 0.0284040130969821, 0.0255357946798584, 
    0.0276680704963855, 0.0283009734389356, 0.0273947664869961, 
    0.0191846595896345, 0.0225736950645381, 0.0185572109335283, 
    0.0266912368721673)), row.names = c(NA, -17L), class = "data.frame"), 
    structure(list(layer = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 
    12, 13, 14, 15, 16, 17), encounter_rate = c(0.0244553100335083, 
    0.0265608905797148, 0.0230754220937747, 0.0126737591788462, 
    0.0208868797777778, 0.0264543431506849, 0.0271490616452074, 
    0.0275509256793189, 0.0274870231454383, 0.0260302106124036, 
    0.0294514198552019, 0.0317358807321971, 0.0303629153539886, 
    0.0191054718841496, 0.0221332367959672, 0.0332987653767865, 
    0.0153846531471452)), row.names = c(NA, -17L), class = "data.frame"), 
    structure(list(layer = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 
    12, 13, 14, 15, 16, 17), encounter_rate = c(0.0254695416164035, 
    0.0260217783555025, 0.0278294141356033, 0.022098210265976, 
    0.0232223153248193, 0.0277460892260692, 0.0280945051729643, 
    0.0308188510180505, 0.0283990843854084, 0.0282966180792079, 
    0.0292701060708535, 0.02484902225, 0.0202313840629426, 0.02730348265625, 
    0.0252544010927835, 0.012387523087037, 0.0243783162068618
    )), row.names = c(NA, -17L), class = "data.frame"))

【问题讨论】:

    标签: r for-loop


    【解决方案1】:

    你可以使用Map

    test.enc <- Map(function(x, y) {names(x)[2] <- y;x}, test.enc,  cols)
    

    使用for 循环:

    for(i in seq_along(test.enc)){
      names(test.enc[[i]])[2] <- cols[i]
    }
    

    cols 在哪里:

    cols <- c("enc_evergreen_needleleaf",  
              "enc_evergreen_broadleaf",  
              "enc_deciduous_needleleaf",  
              "enc_deciduous_broadleaf",  
              "enc_mixed_forest",  
              "enc_closed_shrubland",  
              "enc_open_shrubland",  
              "enc_woody_savanna",  
              "enc_savanna",  
              "enc_grassland",  
              "enc_wetland",  
              "enc_cropland",  
              "enc_urban",  
              "enc_mosaic",  
              "enc_barren")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-10-11
      • 1970-01-01
      • 1970-01-01
      • 2019-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多