使用空列表初始化数据框中的元素

时间:2018-07-25 06:58:19

标签: r list dataframe

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

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()}

什么都没有发生。

1 个答案:

答案 0 :(得分:3)

您可以使用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()