0

私は R の初心者で、一定の間隔 (4 行ごと) でデータ フレームの行を合計する関数を作成する必要があります。次のコードを試しました

camp<-function(X){
  i<-1
  n<-nrow(X)
  xc<-matrix(nrow=36,ncol=m)
  for (i in 1:n){
    xc<-apply(X[i:(i+4),],2,sum)
    rownames(xc[i])<-rownames(X[i])
    i<-i+5
  }
  return(xc)
}

結果は「X[i:(i + 4), ] のエラー: 範囲外のインデックス」です。どうすれば解決できますか?なにか提案を?

ありがとう。

4

2 に答える 2

1

これを行う方法は次のとおりです。

## Sample data
m <- matrix(1:36, nrow=12)
## Create a "group" index
fac <- (seq_len(nrow(m))-1) %/% 4
## Apply sum 
apply(m, 2, function(v) tapply(v, fac, sum))

サンプルデータ :

      [,1] [,2] [,3]
 [1,]    1   13   25
 [2,]    2   14   26
 [3,]    3   15   27
 [4,]    4   16   28
 [5,]    5   17   29
 [6,]    6   18   30
 [7,]    7   19   31
 [8,]    8   20   32
 [9,]    9   21   33
[10,]   10   22   34
[11,]   11   23   35
[12,]   12   24   36

結果 :

  [,1] [,2] [,3]
0   10   58  106
1   26   74  122
2   42   90  138
于 2013-10-26T13:44:35.673 に答える