Сохранить матрицу в файл, используя R - PullRequest
0 голосов
/ 31 августа 2018

Я довольно новичок в R и буду признателен за любую помощь.

Мне нужно вычислить собственные значения ряда матриц, а затем сохранить их в отдельном файле. Мои данные имеют 5 столбцов и 10000 строк. Чтобы иметь возможность рассчитать это, мне нужно разделить данные на ряд матриц 5х5. В качестве примера рассмотрим набор данных, содержащий только 5 столбцов и 10 строк:

1 2 3 4 5
11 21 31 41 51
12 22 32 42 52
13 23 33 43 53
14 24 34 44 54
15 25 35 45 55
16 26 36 46 56
17 27 37 47 57
18 28 38 48 58
19 29 39 49 59 

Я написал код ниже:

R<-NULL
A <- setwd("c:/location of the file on this computer")
for (i in 0:1){
  X <- read.table(A, skip=i*5, nrow=5)
  M <- as.matrix(X)
  E <- eigen(M)
  R<-rbind(R,E)}
}

Результаты должны выглядеть примерно так: eigen () разложение

    $`values`
    [1]  2.362320e+02+0.000000e+00i -4.960046e+01+1.258757e+01i -4.960046e+01-1.258757e+01i  9.689475e-01+0.000000e+00i
    [5]  1.104994e-14+0.000000e+00i

$vectors
             [,1]                    [,2]                    [,3]           [,4]             [,5]
[1,] 0.9351696+0i  0.95959917+0.00000000i  0.95959917+0.00000000i  0.05003956+0i -1.529602e-15+0i
[2,] 0.1382999+0i -0.07952624-0.04585480i -0.07952624+0.04585480i -0.00162525+0i  4.670542e-17+0i
[3,] 0.1451493+0i -0.09392247-0.04970605i -0.09392247+0.04970605i -0.21235137+0i -4.082483e-01+0i
[4,] 0.2521091+0i  0.11157105+0.16033279i  0.11157105-0.16033279i -0.70990185+0i  8.164966e-01+0i
[5,] 0.1473217+0i -0.13518414-0.05496162i -0.13518414+0.05496162i  0.66965637+0i -4.082483e-01+0i

Тем не менее, результат, который я получаю из текущих кодов:

> class(R)
[1] "matrix"
> print(R)
  values    vectors   
E Complex,5 Complex,25
E Complex,5 Complex,25

У меня есть несколько вопросов, и было бы очень полезно, если бы вы могли помочь с любым из них:

  1. Как исправить мою проблему?

  2. Кроме того, выходной файл Excel, созданный во временной папке, не открывается в Excel.

1 Ответ

0 голосов
/ 31 августа 2018

1) Вышеуказанные функции возвращают следующую ошибку: не удается открыть файл «C: / расположение файла на этом компьютере»: в доступе отказано.

Я просто перемещаю файл в каталог с правами доступа или копирую данные файлов в другой файл. И, наконец, импортируйте данные, используя функцию RStudio.

2) Как сохранить результаты цикла в отдельном файле? В этом в этом случае файл Excel с 5 столбцами и 2 строками (5 собственных значений для каждого Матрица 5 х 5).

library(xlsx)
file <- paste(tempdir(), "./usarrests.xlsx", sep="")
res <- write.xlsx(USArrests, file) 

file показывает вам путь к вашему файлу xlsx. В моем случае это:

"C:\\Users\\salman\\AppData\\Local\\Temp\\Rtmpaskn5E./usarrests.xlsx"

Получение матрицы не происходит, вам просто нужно передать матрицу вместо USArrests

https://www.statmethods.net/input/exportingdata.html


Как использовать это в вашем случае?

A <- setwd("c:/location of the file on this computer")
res<-NULL
for (i in 0:1){
  X <- read.table(A, skip=5, nrow=5)
  M <- as.matrix(X)
  E <- eigen(M)
  res<-rbind(res,E)  # This should aggregate all your Es into a dataframe
}
    class(res)
    print(res) 
    library(xlsx)
    file <- paste(tempdir(), "./eigens.xlsx", sep="")
    res <- write.xlsx(res, file)              # Save E into the file
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...