- data<-matrix(1:12,3,4)
- data1<-apply(data,1,function(x){x/data[1,]})
- data1<-t(data1)
这是一个3行4列的矩阵,在apply函数之后data1成为一个4行3列的矩阵,再执行一步转置即可。程序执行的结果是:
- [,1] [,2] [,3] [,4]
- [1,] 1 1.00 1.000000 1.0
- [2,] 2 1.25 1.142857 1.1
- [3,] 3 1.50 1.285714 1.2
当然使用循环在思路上更清晰一些,以下程序得到的结果跟上面是一样的。需要注意第一行在除以自身后元素都变成1,因此要单独把第一行提取出来,赋值给data.row1:
- data<-matrix(1:12,3,4)
- data.row1<-data[1,]
- for (i in 1:nrow(data)) {
- data[i,]<-data[i,]/data.row1
- }