将一列中以“/”分隔的GeneID分成多列

问题描述 投票:0回答:1

我有一个 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
r tidyverse read.csv
1个回答
0
投票

您可以使用

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
值用于填充较短的输入行。您本质上是使用单列数据作为要解析的输入文件。

© www.soinside.com 2019 - 2024. All rights reserved.