0

我想在 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
4

2 回答 2

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

于 2013-03-11T09:44:18.107 回答
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它计算为每个列表。

于 2013-03-11T10:07:20.213 回答