数据框中的列表列表

时间:2011-02-01 01:50:53

标签: linux unix r dataframe

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

> 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)所需的特定数据结构。

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

只有list类型可以是

  • 嵌套(即递归)

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

因此,简而言之,不会嵌套数据框,但您可以在列表中堆叠不同的数据框。

(请不要在这里和r-help上交叉。)