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

删除R中多级列表上data.frames中列的属性,r,list,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"

如何动态删除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"

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

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

其中,
mylist
是问题中的数据结构。

这是一个黑客攻击,但在我的情况下有效

lapply(my_list, FUN=function(x){data.frame(as.matrix(x),stringsAsFactors = F)})

现在回答这个问题可能太晚了,但我想与大家分享

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

  • 要从数据框MyData中的变量VAR中删除属性ATT,请执行以下操作:

    attr(MyData$VAR, "ATT") <- NULL
    

    attr(MyData$VAR,“ATT”)对Parisa代码的细微修改对我来说很有用:

    for (var in colnames(MyData)) {
      attr(MyData[[deparse(as.name(var))]], "ATT_1") <- NULL
      attr(MyData[[deparse(as.name(var))]], "ATT_2") <- NULL
    }
    
    for(colnames中的var(MyData)){
    
    attr(MyData[[deparse(as.name(var))],“ATT_1”)Karsten W.的答案对我来说很有用,因为我必须删除2个以上的属性。稍微修改为

    my_list <- lapply(my_list, FUN=one_entry)
    

    my_list在前面所说的基础上,下面的代码将保留一些属性,并删除数据
    df
    中所有变量的其他属性。只需将要保留在vector
    中的属性替换为_keep
    。在这种情况下,我假设要保留属性“label”和“at1”--当然,假设它们存在


    要保留在这种情况下,当您想要删除
    名称时,您可以使用
    unname
    ,仅与
    lappy
    结合使用:

    lapply(my_list, FUN=one_entry)
    

    dat[]这个结构是从哪里来的?来源是JSON?用什么软件包?
    names
    attribute是为值namesmake我自己的脚本,使nba.com上的JSON文件可读和结构化。你能
    dput
    这个对象的至少一个小样本吗?我发现的最简单的方法是为很多v去掉很多属性变量是将我的
    数据.frame
    转换成
    矩阵
    my_list <- lapply(my_list, FUN=one_entry)