排除列中所有行的前缀(R 软件)

Posted

技术标签:

【中文标题】排除列中所有行的前缀(R 软件)【英文标题】:Exclude prefix to all lines in a column (R software) 【发布时间】:2014-02-17 17:55:47 【问题描述】:

我想从 R 数据框中的特定列中排除所有行的公共前缀。我的意见:

   chr

   chr1
   chr2
   chr3
   chr4

我的预期输出:

  chr
   1
   2
   3
   4

【问题讨论】:

【参考方案1】:

如果这些是因素,那么您需要更改“级别”名称而不是处理项目值:

chrdf <- read.table(text="chr1
    chr2
    chr3
    chr4", col.names="chr")
chrdf
#--------
   chr
1 chr1
2 chr2
3 chr3
4 chr4

levels(chrdf$chr) <- gsub("chr", "", levels(chrdf$chr) )
chrdf
  chr
1   1
2   2
3   3
4   4

“因素”变量类型对许多人来说是一个难题。我可以证明,困难持续了很长一段时间。我没有问很多问题,但我确实问过的问题得到了其他同样困惑(或者更聪明的人只是困惑和同情)的 SO 读者群的很多支持。

【讨论】:

我不太明白为什么这是必要的。只是为了维护“chr”列的factor 类?【参考方案2】:

这很容易使用gsub:

x <- c("chr1", "chr2", "chr3", "chr4")
gsub("chr", "", x)
# [1] "1" "2" "3" "4"

你也可以考虑substring函数。

substring(x, 4, nchar(x))
# [1] "1" "2" "3" "4"

【讨论】:

可能值得一提的是如何将其转换为数字而不是字符串 @JuliánUrbano,我不想过分强调显而易见的事情,但请随时编辑 :-) 如果他需要它们作为整数,以后可能会很麻烦。 我认为显而易见的对我来说是必要的...... =/ chr &lt;- paste0("chr", 1:4), as.numeric(gsub("chr", "", chr))

以上是关于排除列中所有行的前缀(R 软件)的主要内容,如果未能解决你的问题,请参考以下文章

在排除某些行的矩阵的列中查找最大元素

如果 2 行在 2 列中有数据匹配,则排除数据行

销售单怎么快速入金蝶软件里

R - 检查 r 数据框行的任何列中是不是存在 NA,如果存在,则删除该行 [重复]

一列中相同值的R子集行取决于另一列中的多个值

推荐一款替代微软命令行的免费软件