我有一个大字符矩阵:
Chromosome Start End ...
1 1 5000 ...
2 1 4000 ...
... ... ...
我想从第二列的每个条目中减去1。想到的第一个想法是分离每一列,将第二列转换为数字,执行减法并使用cbind将所有内容拼凑在一起。但是,由于我有超过20列,我想要更高效的东西。
我很感激您的意见。
谢谢!
答案 0 :(得分:2)
为什么不呢(现在假设字符矩阵,但也适用于/ dataframe。)
dat[ ,2 ] <- as.numeric(dat[, 2 ])-1
答案 1 :(得分:0)
我会推荐gsubfn
套餐,因为它专为此类案例设计,特别是:
library(gsubfn)
dat[, 2] <- gsubfn("\\d", function(x) as.numeric(x) - 1, dat[, 2])
dat
## Chromosome Start End
## [1,] "1" "0" "5000"
## [2,] "2" "0" "4000"