2013-03-11 94 views
0

我想減去R中的某個列?怎麼做?如何減去R中的某個列?

vec <- 1:20 
mat <- matrix(vec,ncol=4) 

mat 
    [,1] [,2] [,3] [,4] 
[1,] 1 6 11 16 
[2,] 2 7 12 17 
[3,] 3 8 13 18 
[4,] 4 9 14 19 
[5,] 5 10 15 20 

例如,我想計算出結果第1,4,二路和4日,3屆和第4

之間的區別:

M1 <- mat[,1]-mat[,4] 

M2 <- mat[,2]-mat[,4] 

M3 <- mat[,3]-mat[,4] 
nmat <- data.frame(M1,M2,M3) 
nmat 

    M1 M2 M3 
1 -15 -10 -5 
2 -15 -10 -5 
3 -15 -10 -5 
4 -15 -10 -5 
5 -15 -10 -5 
+4

你的問題是什麼?你的代碼似乎工作? – juba 2013-03-11 09:34:28

+4

爲什麼不'mat-mat [,4]'? – Roland 2013-03-11 09:37:23

+1

或'mat [,1:3] - mat [,4]' – 2013-03-11 09:43:57

回答

5

嘗試

vec <- 1:20 
mat <- matrix(vec, ncol = 4) 
mat[, 1:3] - mat[, 4] 
##  [,1] [,2] [,3] 
## [1,] -15 -10 -5 
## [2,] -15 -10 -5 
## [3,] -15 -10 -5 
## [4,] -15 -10 -5 
## [5,] -15 -10 -5 

PS:這在R中很基礎,也許你應該看看這裏列出的一些基本的R教程。 https://stackoverflow.com/tags/r/info

1

你也可以使用一個lapply功能

lapply(mat[[1]], function(k){return(mat[, 1:3] - mat[, 4])}) 

它給你的機會,每個列表計算。

and gives the following output: 
[[1]] 
    [,1] [,2] [,3] 
[1,] -15 -10 -5 
[2,] -15 -10 -5 
[3,] -15 -10 -5 
[4,] -15 -10 -5 
[5,] -15 -10 -5 
每次

更改mat[[1]]到例如[[2]]。 'lapply'函數將計算另一個列表。如果你只是把mat它會計算每個列表。