在 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))
}
我正在尝试在 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 withexport
.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)) }