如何只对矩阵的一列进行减法?

时间:2014-08-25 21:10:20

标签: r math

我有一个大字符矩阵:

Chromosome   Start    End   ... 
1            1        5000  ...
2            1        4000  ...
...          ...      ...

我想从第二列的每个条目中减去1。想到的第一个想法是分离每一列,将第二列转换为数字,执行减法并使用cbind将所有内容拼凑在一起。但是,由于我有超过20列,我想要更高效的东西。

我很感激您的意见。

谢谢!

2 个答案:

答案 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"