删除R中多级列表中data.frames中列的属性

geo*_*dex 11 r list

如何在R中的嵌套列表中删除以下data.frames列的属性?

List of 1
 $ 0021400001:List of 19
   $ GameSummary      :'data.frame':    1 obs. of  13 variables:
    $ GAME_DATE_EST                   : Factor w/ 1 level "2014-11-09T00:00:00": 1
      - attr(*, "names")= chr "1"
    $ GAME_SEQUENCE                   : Factor w/ 1 level "2": 1
      - attr(*, "names")= chr "2"
    $ GAME_ID                         : Factor w/ 1 level "0021400091": 1
      - attr(*, "names")= chr "3"
    $ GAME_STATUS_ID                  : Factor w/ 1 level "3": 1
      - attr(*, "names")= chr "4" 
   $ SeasonSeries     :'data.frame':    1 obs. of  7 variables:
     $ GAME_ID         : Factor w/ 1 level "0021400001": 1
      - attr(*, "names")= chr "1"
     $ HOME_TEAM_ID    : Factor w/ 1 level "1610612740": 1
      - attr(*, "names")= chr "2"
     $ VISITOR_TEAM_ID : Factor w/ 1 level "1610612753": 1
      - attr(*, "names")= chr "3"
Run Code Online (Sandbox Code Playgroud)

小智 13

这可能为时已晚,无法回答这个问题,但我想分享一下.

两个解决方案:1.从merTools包中的函数stripAttributes.

  1. 从数据框MyData中的变量VAR中删除属性ATT:

    attr(MyData$VAR, "ATT") <- NULL
    
    Run Code Online (Sandbox Code Playgroud)

如果要删除所有变量的多个属性:

For (var in colnames(MyData)) {
     attr(MyData[,deparse(as.name(var))], "ATT_1") <- NULL
     attr(MyData[,deparse(as.name(var))], "ATT_2") <- NULL
}
Run Code Online (Sandbox Code Playgroud)

我希望这有助于此


Kar*_* W. 5

您可以编写一个对列表中的一个条目起作用的函数,例如

one_entry <- function(x) {
    for (i in length(x)) attr(x[[i]], "names") <- NULL
    return(x)
}
Run Code Online (Sandbox Code Playgroud)

然后运行lapply

lapply(my_list, FUN=one_entry)
Run Code Online (Sandbox Code Playgroud)

问题中mylist的数据结构在哪里。