(Перекрестно из AskUbuntu: https://askubuntu.com/questions/1230138/cannot-use-the-solve-function-in-gnu-r-with-ubuntu-20-04)
Я не могу использовать функцию resolve () в GNU R. В частности, всякий раз, когда я пытаюсь инвертировать матрица, использующая указанную функцию, консоль зависает. Ниже я более подробно объясню эту ситуацию.
Рассмотрим код
D = matrix(
data = c(1, 2, 3, 4),
nrow = 2,
ncol = 2,
byrow = TRUE
)
solve(D)
- Если я запустил код в R, вызванный с терминала, скажем, Konsole, сеанс зависнет.
- Я знаю, что точное время зависания системы - это когда я выполняю функцию resolve ().
- Согласно htop, когда это происходит, одно из ядер моего процессора используется на 100%.
- Если я запускаю тот же код в RStudio, код работает должным образом. Однако, если я вызываю его с помощью терминала внутри RStudio, сеанс зависает.
- Если в документе RMarkdown используется функция resolve (), сеанс будет остановлен, и документ не будет создан.
- Запуск R с --vanilla не приводит к решить проблему.
- Перезагрузка P C с использованием моей внешней карты graphi c, переустановка пакета r-base-core в apt и попытки использования других эмуляторов терминала не помогают.
- Из документации функции resolve () в R можно увидеть, что решить (A, B) фактически принимает два аргумента: A - это матрица, а B - вектор или матрица. Если B - вектор, он решает линейную систему Ax = B. Если B - матрица, он решает AX = B и возвращает X. Если во втором аргументе ничего не указано, он автоматически принимает единичную матрицу подходящего размера как B. Первая функция решения линейной системы работает. Однако, если я укажу матрицы в качестве второго аргумента, произойдет та же проблема.
- Использование QR-разложения с qr.solve (A) по-прежнему работает хорошо .
Вот мои вопросы:
- Была ли у кого-нибудь такая же проблема, как у меня?
- Я также ищу рекомендации, как решить эту проблему.
К вашему сведению, я использую R версии 3.6.3, установленную из репозитория apt по умолчанию.
Спасибо за чтение и будьте в безопасности!
N0rbert из AskUbuntu дал мне следующий ответ:
Я не могу воспроизвести на чистой 20.04 LTS VM. См. Мои шаги по воспроизведению -
pastebin.com/R7JhkYJT. Запустите его на своем компьютере и поделитесь результатом. Также добавьте вывод R и R --version в тело вопроса.
При выполнении кода N0rbert из исполняемого файла сценария bash сеанс зависает при решении (D).
kobyeongmin@odie:~/Temp$ ./r-test.sh
R version 3.6.3 (2020-02-29) -- "Holding the Windsock"
Copyright (C) 2020 The R Foundation for Statistical Computing
Platform: x86_64-pc-linux-gnu (64-bit)
R is free software and comes with ABSOLUTELY NO WARRANTY.
You are welcome to redistribute it under certain conditions.
Type 'license()' or 'licence()' for distribution details.
Natural language support but running in an English locale
R is a collaborative project with many contributors.
Type 'contributors()' for more information and
'citation()' on how to cite R or R packages in publications.
Type 'demo()' for some demos, 'help()' for on-line help, or
'help.start()' for an HTML browser interface to help.
Type 'q()' to quit R.
> D = matrix(
+ data = c(1, 2, 3, 4),
+ nrow = 2,
+ ncol = 2,
+ byrow = TRUE
+ )
> solve(D)
Также здесь вывод R и R - версии:
kobyeongmin@odie:~$ which R
/usr/bin/R
kobyeongmin@odie:~$ R --version
R version 3.6.3 (2020-02-29) -- "Holding the Windsock"
Copyright (C) 2020 The R Foundation for Statistical Computing
Platform: x86_64-pc-linux-gnu (64-bit)
R is free software and comes with ABSOLUTELY NO WARRANTY.
You are welcome to redistribute it under the terms of the
GNU General Public License versions 2 or 3.
For more information about these matters see
https://www.gnu.org/licenses/.