テスト データを再作成します。
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=...)
またはお気に入りの書き込み関数を使用して、データをファイルに保存します。