删除R中多级列表上data.frames中列的属性
如何动态删除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"
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
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)