0

Rで特定の列を1つ減算したいですか? どうやってするの?

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(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 に答える