重新创建测试数据:
xx <- structure(list(
`15LOX-1` = "207328_at",
`16.1` = "215946_x_at",
`16.2` = NA,
`16.3A5` = c("200983_x_at", "200984_s_at", "200985_s_at", "212463_at", "228748_at"),
`160-KD` = c("201224_s_at", "201225_s_at" ),
`1600019D15Rik` = c("218465_at", "222642_s_at", "225492_at", "235907_at", "238831_at")),
.Names = c("15LOX-1", "16.1", "16.2", "16.3A5", "160-KD", "1600019D15Rik"))
首先,删除所有 NA 值:
xx[is.na(xx)] <- NULL
现在,创建一个临时变量来存储 x 中每个元素的长度:
tmp <- sapply(xx, function(xt)length(xt))
现在使用rep
来创建键(即重复 x 的名称,每次关联元素的长度),并使用 和 的组合unlist
来unname
创建值:
data.frame(
key = rep(names(tmp), times=unname(tmp)),
value = unlist(unname(xx))
)
这会产生:
key value
1 15LOX-1 207328_at
2 16.1 215946_x_at
3 16.3A5 200983_x_at
4 16.3A5 200984_s_at
5 16.3A5 200985_s_at
6 16.3A5 212463_at
7 16.3A5 228748_at
8 160-KD 201224_s_at
9 160-KD 201225_s_at
10 1600019D15Rik 218465_at
11 1600019D15Rik 222642_s_at
12 1600019D15Rik 225492_at
13 1600019D15Rik 235907_at
14 1600019D15Rik 238831_at
最后,使用write.csv(x, file=...)
或您喜欢的写入功能将数据保存到文件。