экспортировать массив в R с каждой отдельной матрицей в другой таблице

Я хочу экспортировать этот массив в csv, где каждая матрица моего массива экспортируется в отдельные таблицы.

> a <- aperm(array(1:96, dim= c(4,8,3)), c(2,1,3))
, , 1

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

, , 2

     [,1] [,2] [,3] [,4]
[1,]   33   34   35   36
[2,]   37   38   39   40
[3,]   41   42   43   44
[4,]   45   46   47   48
[5,]   49   50   51   52
[6,]   53   54   55   56
[7,]   57   58   59   60
[8,]   61   62   63   64

, , 3

     [,1] [,2] [,3] [,4]
[1,]   65   66   67   68
[2,]   69   70   71   72
[3,]   73   74   75   76
[4,]   77   78   79   80
[5,]   81   82   83   84
[6,]   85   86   87   88
[7,]   89   90   91   92
[8,]   93   94   95   96

Результат, который я получаю при использовании write.csv(), представляет собой таблицу, в которой каждая матрица соединена вместе. Я хочу 3 разных таблицы в моем csv.

Вы можете мне помочь?

что я хочу


person Jose Victor Zambrana    schedule 20.07.2017    source источник
comment
Не могли бы вы более точно объяснить, как должен выглядеть результирующий csv?   -  person Florian    schedule 20.07.2017
comment
если использовать write.csv(), мои матрицы соединяются слева, чтобы писать без разделения. Я хочу, чтобы они были отделены друг от друга   -  person Jose Victor Zambrana    schedule 20.07.2017
comment
Лучше всего было бы организовать их по наследству.   -  person Jose Victor Zambrana    schedule 20.07.2017


Ответы (1)


Мне все еще не ясно на 100%, но это то, что вы пытаетесь сделать?

a = aperm(array(1:96, dim= c(4,8,3)), c(2,1,3))

b = a[,,1]

for( i in 2:dim(a)[3])
{
  # uncomment the line below if you want no white space between tables.
  b = rbind(b, rep("",ncol(b)))
  b = rbind(b,a[,,i])
}

write.csv(b,file="test.csv",row.names = F)

Результирующий CSV:

введите здесь описание изображения

person Florian    schedule 20.07.2017
comment
for(i in 2:dim(a)[3]) что означает эта часть кода? - person Jose Victor Zambrana; 20.07.2017
comment
Я уже добавил a[,,1] в кадр данных b, так что теперь мы хотим еще добавить a[,,2] и a[,,3]. размеры 1 равны 8x4x3, и мы хотим зациклиться на третьем измерении. Попробуйте dim(a) в консоли. Так что в данном случае это упрощается до for (i in 2:3). - person Florian; 20.07.2017
comment
ваш код работает, но я хочу использовать их с набором данных другой длины. Мне нужно понять это, чтобы использовать его с разными наборами данных. У меня есть интуиция о том, что вы сделали, но я хотел бы, чтобы вы объяснили мне - person Jose Victor Zambrana; 20.07.2017
comment
for(i in 2:dim(a)[3]) значит, это означает повторить 2 раза в третьем измерении? Извините, я не изучил должным образом циклические функции. Как я могу их выучить? - person Jose Victor Zambrana; 20.07.2017
comment
См. здесь google.nl/amp/s/www.r-bloggers.com/. Вы можете начать с простого создания цикла for, который печатает (i), чтобы лучше понять, что происходит. Пожалуйста, примите мой ответ, если он вам помог, это было бы здорово! - person Florian; 20.07.2017
comment
Теперь я могу понять ваш код! :) можно еще вопрос? У меня большой набор данных, и я хочу связать столбцы через каждые три a[,,1:3], где z‹-cbind(a[,,1],a[,,2],a[,,3]).. ., но я хочу соединять строки через каждые z. zz ‹-rbind(z,a[,,4],a[,,5],a[,,6]), rbind(zz, a[,,7],a[,,8],a[, ,9]). Эта схема нечеткая :( - person Jose Victor Zambrana; 20.07.2017
comment
Вы можете создать несколько петель, одну для первых трех, одну для 4-6 и т. д. - person Florian; 20.07.2017