【问题标题】:R convert dictionary to listR将字典转换为列表
【发布时间】:2019-04-14 08:55:40
【问题描述】:

我有一个这样的列表(或字典):

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)

有了这个结果:

【问题讨论】:

  • 那么您想要列表列表还是数据框?
  • 对不起,我对 R 词汇有点陌生。最后我想要一个像截图一样的数据框。但我假设在转换为数据框之前我需要一个列表?

标签: r dictionary dataframe


【解决方案1】:
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

【讨论】:

  • 我认为它有效。现在我需要应用 KNN 算法,它一直给我一个错误。非常感谢!
  • 我忘了添加一些上下文。一秒。
猜你喜欢
  • 2017-04-23
  • 2021-10-13
  • 1970-01-01
  • 1970-01-01
  • 2018-08-21
  • 1970-01-01
  • 2015-07-23
  • 1970-01-01
相关资源
最近更新 更多