我有一个这样的列表(或字典):
df <- list(`digits/trainingDigits/0_0.txt` = c(0, 1, 1, 0), `digits/trainingDigits/0_1.txt` = c(0, 1, 0, 0), `digits/trainingDigits/0_10.txt` = c(0, 0, 1, 0))
我想将其转换为以下列表:
df <- list(c(0, 1, 1, 0), c(0, 1, 0, 0), c(0, 0, 1, 0))
以某种方式删除“ =”之前的文本。我对r很陌生,我假设它就像是一个带有键和值的Python字典。在这种情况下,我想要一个值列表。
所以最后我会有这个:
df2 <- list(c(0, 1, 1, 0), c(0, 1, 0, 0), c(0, 0, 1, 0))
df2 <- as.data.frame(df2)
t(df2)
此结果:
答案 0 :(得分:2)
dat <- list(
`digits/trainingDigits/0_0.txt` = c(0, 1, 1, 0),
`digits/trainingDigits/0_1.txt` = c(0, 1, 0, 0),
`digits/trainingDigits/0_10.txt` = c(0, 0, 1, 0)
)
上面是一个命名列表。让我们删除名称:
str(unname(dat))
## List of 3
## $ : num [1:4] 0 1 1 0
## $ : num [1:4] 0 1 0 0
## $ : num [1:4] 0 0 1 0
现在上面是一个未命名列表。我们可以将其转换为数值矩阵:
do.call(rbind, unname(dat))
## [,1] [,2] [,3] [,4]
## [1,] 0 1 1 0
## [2,] 0 1 0 0
## [3,] 0 0 1 0
然后将其转换为数据框:
as.data.frame(do.call(rbind, unname(dat)))
## V1 V2 V3 V4
## 1 0 1 1 0
## 2 0 1 0 0
## 3 0 0 1 0