假设我确实有一个数据框:
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()}
什么都没有发生。
答案 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()