在 R 中发送带有参数的系统命令

Sending system command with arguments in R

我正在尝试在 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")

遗憾的是程序无法通过这种方式找到文件。您能否建议是否有使用这种方法的方法?谢谢!

您可以使用

command = paste(
      "export $(dbus-launch); \
       export NSS_USE_SHARED_DB=ENABLED; \
       libreoffice --calc",
     FILE )
system(command)

这个 Community Wiki 答案摘自之前出现在问题中的自我回答:


Code based on @CharlesDuffy's answer with some revisions, as I cannot make /bin/sh work with 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 \"\" ",
                  FILE))
}