为什么数据框维度中缺少可见列?

Why is visible column missing from data frame dimensions?

我有一个名为 df.alt.alleles 的非常长的数据框,看起来像这样(约 900 万行):

                    AC
1:123456789_G/C     5
1:139406018_A/T     21
1:156902649_C/G     47
1:189027493_A/G     23

当我找到 class 时,我被告知这是一个数据框:

class(df.alt.alleles)
##"data.frame"

当我查询维度时,我被告知只有一列,但在查看时似乎有两列。

dim(df.alt.alleles)
##

我想找到 _ 的所有实例并删除它以及该列中它之后的所有内容,以生成如下所示的新数据框(但对于所有 900 万行):

                    AC
1:123456789         5
1:139406018         21
1:156902649         47
1:189027493         23

我试过使用:

sub("_\S*", "", "df.alt.alleles")

这里建议:Remove everything after a string in a data frame column with missing values

这个returns一个字符串,其中包含"AC"列中的所有数字。

注意: 对不起,如果这是一个糟糕的问题,但我是一个完整的 R 新手,并且已经到处搜索了一些看起来非常基本的解释。如果问题格式不正确,我深表歉意,我对此完全陌生,我会采纳任何建议!

在这里,你可以看到问题和更正,我相信:

df
                AC
1:123456789_G/C  5
1:139406018_A/T 21
1:156902649_C/G 47
1:189027493_A/G 23

df$somename <- row.names(df)
df
                AC        somename
1:123456789_G/C  5 1:123456789_G/C
1:139406018_A/T 21 1:139406018_A/T
1:156902649_C/G 47 1:156902649_C/G
1:189027493_A/G 23 1:189027493_A/G

row.names(df) <- NULL
df
  AC        somename
1  5 1:123456789_G/C
2 21 1:139406018_A/T
3 47 1:156902649_C/G
4 23 1:189027493_A/G

使用 dplyr 和 tidyr:

library(dplyr)
library(tidyr)

df %>%
  add_rownames("variant") %>%
  separate(variant, into = c("chr", "bp", "allele"), sep = "_|:", remove = FALSE)


# Source: local data frame [4 x 5]
# 
#           variant   chr        bp allele    AC
#             (chr) (chr)     (chr)  (chr) (int)
# 1 1:123456789_G/C     1 123456789    G/C     5
# 2 1:139406018_A/T     1 139406018    A/T    21
# 3 1:156902649_C/G     1 156902649    C/G    47
# 4 1:189027493_A/G     1 189027493    A/G    23