Использование rollapply для набора данных с 30 столбцами

Я новичок в R и пытаюсь получить средства набора данных экспрессии генов. Это файл csv, содержащий 185 строк (имена генов) и 30 столбцов (временные точки в трех экземплярах).

Я использую следующие команды для импорта файла csv. файл в R

read.csv ('~ / Рабочий стол / WNV Spleen.csv', row.names = 1)

        CM1     CM2     CM3     D1M1    D1M2    D1M3    D2M1    D2M2 etc..... 
Atf2    3152.9  6178.12 4660.91 6900.13 8172.9  7928.51 6100.99 6438.84
Bcl6    123.64  491.09  52.53   575.6   673.36  415.57  635.76  364.4
etc....

затем я проверяю, что он читается как матрица

sp ‹-as.matrix (read.csv ('~ / Desktop / WNV Spleen.csv', row.names = 1)) is.matrix (sp) [1] ИСТИНА

затем я пытаюсь выполнить rollapply, используя следующую команду, которая выполняет функцию, но не правильную. Хотите рассчитать среднее значение для каждой строки.

z<-zoo(sp)
> rollapply(z[,1], width=3, mean, by=3, by.column=TRUE)
           2            5            8           11           14           17           20           23           26           29           32           35           38 
  2939.96000  19679.89333 111739.20333  36303.04667  18477.80333    137.38000    116.77333    295.37000    103.03667    123.64333     96.16667    467.09667  22448.12667 
          41           44           47           50           53           56           59           62           65           68           71           74           77 
  7143.83333   9575.48667    549.52333    157.99000    274.76333    329.71667    288.50000  17893.93333   3221.59333   1621.10000   9513.66667    906.71667     54.95333 
          80           83           86           89           92           95           98          101          104          107          110          113          116 
   377.80000     61.82333    597.60667    281.63000    941.06333     48.08333     82.42667     61.82000   1298.25333    274.76667   6985.84667    157.98667    838.03000 
         119          122          125          128          131          134          137          140          143          146          149          152          155 
  2301.14000   1099.05333   2198.10667   3695.56333   3544.44000  26713.82667    309.10667    899.84667    872.37333   2328.61667   2685.80667   3125.43000    934.19333 
         158          161          164          167          170          173          176          179          182 
  4190.13333   6683.60667    762.46667   3049.86667    583.87000    460.23000    590.74000    171.72667   1689.79333 

Попробуйте переписать команду следующим образом:

> rollapply(z[1,], width=3, mean, by=3, by.row=TRUE)
Error in seq.default(start.at, NROW(data), by = by) : 
  wrong sign in 'by' argument
> rollapply(z[2, ], width=3, mean, by=3, by.row=TRUE)
Error in seq.default(start.at, NROW(data), by = by) : 
  wrong sign in 'by' argument

Так что не сработало. Может кто-нибудь помочь мне разобраться, что я сделал не так ??? Заранее спасибо!!!!

Хосе


person user3231093    schedule 24.01.2014    source источник
comment
См. ?rowMeans. Вызов rowMeans(sp) даст вам вектор, состоящий из среднего значения каждой строки sp.   -  person fotNelton    schedule 24.01.2014