我有一个 data.frame,只有一列用“/”分隔的基因 ID,请参阅数据。
行 | x |
---|---|
第1行 | 5788/3689/5230/8826/302/79026/203068/476 |
第2行 | 3312/6892/811/3123/3122 |
如何获得每个单元格中只有一个ID的data.frame,如下所示,非常感谢。
行 | v1 | v2 | v3 | v4 | v5 | v6 | v7 | v8 |
---|---|---|---|---|---|---|---|---|
第1行 | 5788 | 3689 | 5230 | 8826 | 302 | 79026 | 203068 | 476 |
第2行 | 3312 | 6892 | 811 | 3123 | 3122 |
您可以使用
read.table
,仅使用 x 列作为 text
输入向量,并指定 fill=TRUE
和 sep="/"
read.table(text=dat$x, sep="/", fill =TRUE)
V1 V2 V3 V4 V5 V6 V7 V8
1 5788 3689 5230 8826 302 79026 203068 476
2 3312 6892 811 3123 3122 NA NA NA
并且
cbind
它可以是原始数据框或只是行列:
cbind(rows=dat$rows, read.table(text=dat$x, sep="/", fill =TRUE))
#------------
rows V1 V2 V3 V4 V5 V6 V7 V8
1 row1 5788 3689 5230 8826 302 79026 203068 476
2 row2 3312 6892 811 3123 3122 NA NA NA
fill=
参数让 read.table 接受每行包含不同数量项目的输入行。 sep=
参数允许使用与通常的空格或逗号分隔符不同的分隔字符。NA
值用于填充较短的输入行。您本质上是使用单列数据作为要解析的输入文件。