我有一个由以下记录组成的数据框。数据帧的典型行df [1,]如下所示
84745,"F",70,7,"Single",2,"N",4,9,1,1,3,4,4,"2 day","<120 and <80",0,8,0,1,1,1,1,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,1
我想将其转换为myvar之类的变量,其下面的类型为
myvar = list( list(84745,"F",70,7,"Single",2,"N",4,9,1,1,3,4,4,"2 day","<120 and <80",0,8,0,1,1,1,1,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,1))
我已尝试执行以下操作,但无法将其转换为列表列表。
myvar <- as.list(as.list(as.data.frame(t(df[1,]))))
我该怎么做?
编辑:我已经尝试了myvar = list(unclass(df [14,]))。然而它失败了,因为输出myvar的格式略有不同。
原始代码行的格式
[[1]]
[[1]][[1]]
[1] 21408
[[1]][[2]]
[1] "M"
[[1]][[3]]
[1] 69
[[1]][[4]]
[1] 3
[[1]][[5]]
[1] "Widowed"
myvar = list的格式(unclass(df [14,]))
[[1]]
[[1]]$ID
[1] "21408"
[[1]]$GenderCD
[1] "M"
[[1]]$Age
[1] "69"
[[1]]$LOS
[1] "3"
[[1]]$MaritalStatus
[1] "Widowed"
答案 0 :(得分:3)
试试这个:
myvar <- list( unclass( df[1,] )
说明:df [1,]实际上仍然是一个列表但具有“data.frame”类属性。如果删除它的类,它现在只是一个普通的列表。当你执行t(df[1,]
- 操作时,你强制该行成为一个列向量,在数据帧中所有人都需要这样的类来强制发生。
如果目标是逐行解决方案,那么请执行以下操作:
myvar <- list()
for (i in seq(nrow(df)) ) { myvar[[i]] <- unclass( df[i,] )}
如果它还需要未命名,我宁愿怀疑,但我认为那是可能的:
myvar <- list()
for (i in seq(nrow(df)) ) { myvar[[i]] <- unname( unclass( df[i,] )) }
我使用以下方法测试了unname
策略:
> unname(unclass( data.frame(a=345,b="tyt")[1,]))
[[1]]
[1] 345
[[2]]
[1] tyt
Levels: tyt
attr(,"row.names")
[1] 1