排除列中所有行的前缀(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 <- paste0("chr", 1:4)
, as.numeric(gsub("chr", "", chr))
以上是关于排除列中所有行的前缀(R 软件)的主要内容,如果未能解决你的问题,请参考以下文章