首页 > 解决方案 > 使用空列表启动数据框中的元素

问题描述

假设我确实有一个数据框:

x <- data.frame(TYPE=c("DEL", "DEL", "DUP", "TRA", "INV", "TRA"),
CHRA=c("chr1", "chr1", "chr1", "chr1", "chr2", "chr2"),
POSA=c(10, 15, 120, 340, 100, 220),
CHRB=c("chr1", "chr1", "chr1", "chr2", "chr2", "chr1"),
POSB=c(30, 100, 300, 20, 200, 320))

我如何在 x 中启动另外 2 列,其中这 2 列中的每个元素都将是一个列表(该列表可以稍后更新)。谢谢 !

我要不要,

for (i in 1:dim(x)[1]) { x$intersectA[i] <- list()}

for (i in 1:dim(x)[1]) { x$intersectB[i] <- list()}

什么都没有发生。

标签: rlistdataframe

解决方案


您可以使用空列表rep()来启动list()特定长度的填充。

利用

x$intersectA <- rep(list(list()), nrow(x))
x$intersectB <- rep(list(list()), nrow(x))

得到两个用空列表填充的列表。

> x
  TYPE CHRA POSA CHRB POSB intersectA intersectB
1  DEL chr1   10 chr1   30       NULL       NULL
2  DEL chr1   15 chr1  100       NULL       NULL
3  DUP chr1  120 chr1  300       NULL       NULL
4  TRA chr1  340 chr2   20       NULL       NULL
5  INV chr2  100 chr2  200       NULL       NULL
6  TRA chr2  220 chr1  320       NULL       NULL

> x$intersectA
[[1]]
list()

[[2]]
list()

[[3]]
list()

[[4]]
list()

[[5]]
list()

[[6]]
list()

推荐阅读