Отправка системной команды с аргументами в R - PullRequest
0 голосов
/ 08 марта 2019

Я пытаюсь написать функцию в R, которая позволила бы мне автоматически просматривать фрейм данных, используя Libreoffice.Идея состоит в том, что когда я хочу посмотреть на данные, функция напишет временный CSV-файл и откроет его с R. Вот код, который у меня есть:

view <- function(data) {
    FILE = "/home/spreadSheetView/temp.csv"
    write.csv(data, file = FILE, row.names = F)
    system(command = "export $(dbus-launch); \
                      export NSS_USE_SHARED_DB=ENABLED; \
                      libreoffice --calc /home/spreadSheetView/temp.csv")
}

И код работает.Однако вместо использования абсолютного каталога для файла при открытии его в Libreoffice я хочу использовать что-то вроде $FILE или ${FILE}, и последняя строка кода будет выглядеть следующим образом:

libreoffice --calc $FILE")

К сожалению, программа не может найти файл таким способом.Не могли бы вы предложить, если есть способы использовать эту методологию?Спасибо!

Ответы [ 2 ]

2 голосов
/ 08 марта 2019

Вы можете использовать

command = paste(
      "export $(dbus-launch); \
       export NSS_USE_SHARED_DB=ENABLED; \
       libreoffice --calc",
     FILE )
system(command)
1 голос
/ 08 марта 2019

Этот вики-ответ сообщества взят из самостоятельного ответа, ранее присутствовавшего в вопросе:


Код, основанный на ответе @ CharlesDuffy с некоторыми изменениями, так как я не могу заставить /bin/sh работать с export.

view <- function(data) {
    FILE = "/home/spreadSheetView/temp.csv"
    write.csv(data, file = FILE, row.names = F)
    system2(command = "export",
        args = c("$(dbus-launch) NSS_USE_SHARED_DB=ENABLED; ",
                 "libreoffice --calc \"$1\" ",
                  FILE))
}
...