【问题标题】:List of List in Data Frame数据框中的列表列表
【发布时间】:2011-06-18 23:45:43
【问题描述】:

我有一个这样生成的数据:

> dat1 <- data.frame(V1 = rep(1, 5), V2 = sample(c(40:45), 5))
> dat2 <- data.frame(V1 = sample(c(0,1), 5, replace = TRUE), V2 = sample(c(40:45), 5, replace = TRUE))

我想要做的是获取一个包含列表列表的数据框。

> hiv
$hiv.dat1
$hiv.dat1$V1[[1]]
[1] 1 1 1 1 1

$hiv.dat1$V2[[1]]
[1] 41 42 43 40 44


$hiv.dat2
$hiv.dat2$V1[[1]]
[1] 0 1 1 0 0

$hiv.dat2$V2[[1]]
[1] 42 43 40 44 43

但是为什么这行命令无法创建呢?

> hiv <- list(hiv.dat1 = as.list(dat1), hiv.dat2 = as.list(dat2))

特别是它给出“$hiv.dat1$V1”而不是“$hiv.dat1$V1[[1]]”。

我们该如何纠正呢? 我需要特定包 (ROCR) 所需的这种特定数据结构。

【问题讨论】:

  • 我无法理解您想要什么 - str(hiv) 表明您的命令创建了一个包含两个子列表的列表。以下所有工作都是为了访问第一个子列表的第一列:hiv$hiv.dat1$V1hiv$hiv.dat1[[1]]hiv[[1]][[1]] 甚至 hiv[[1]]$V1

标签: linux unix r dataframe


【解决方案1】:

您似乎希望数据框中的每个元素都成为自己的列表(长度为 1);您的代码改为将每个数据框变成一个包含数据框元素的列表。您需要使用lapplylist 函数单独应用于每个元素。

hiv <- list(hiv.dat1 = lapply(dat1, list), hiv.dat2 = lapply(dat2, list))

【讨论】:

    【解决方案2】:

    只有list类型可以是

    • 嵌套(即递归)

    • 包含不同类型长度的对象

    所以简而言之,没有嵌套数据框,但是你可以在一个列表中堆放不同的数据框。

    (请不要在此处和 r-help 上交叉发布。)

    【讨论】:

      猜你喜欢
      • 2017-07-09
      • 2012-01-18
      • 1970-01-01
      • 2023-01-17
      • 2017-10-04
      • 2018-02-05
      • 2023-01-04
      • 2013-01-15
      • 2020-09-13
      相关资源
      最近更新 更多