我想在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,第2和第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
答案 0 :(得分: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 :(得分: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
它将为每个列表计算。