Вопрос по r, shell – R, передавая переменные в системную команду

5

Используя R, я ищу, чтобы создать QR-код и вставить его в электронную таблицу Excel (сотни кодов и электронных таблиц). Очевидным способом, по-видимому, является создание QR-кода с использованием командной строки и использование «системы». команда на R. Кто-нибудь знает, как передать переменные R через систему? команда? Google не слишком полезен, так как & quot; система & quot; является немного общим, система не содержит каких-либо примеров этого.

Примечание. На самом деле я использую матрицы данных, а не QR-коды, но использую термин «матрица данных». вопрос R приведет к хаосу, поэтому давайте вместо этого поговорим о QR-кодах. :-)

system("dmtxwrite my_r_variable -o image.png")

терпит неудачу, как и варианты, которые я пробовал с & quot; вставкой & quot ;. Любые предложения с благодарностью принимаются.

Ваш Ответ

2   ответа
12

Допустим, у нас есть переменнаяx что мы хотим передатьdmtxwrite, вы можете передать его как:

x = 10
system(sprintf("dmtxwrite %s -o image.png", x))

или используяpaste:

system(paste("dmtxwrite", x, "-o image.png"))

но я предпочитаюsprintf в этом случае

Не радуйтесь, но:system(paste("echo", x, "| dmtxwrite -o image.png")) делает работу. Спасибо, что заставили меня думать правильно. Jonathan Burley
0

Также используюbase::system2 может стоить считатьsystem2 предоставляетargs аргумент, который можно использовать для этой цели. В вашем примере:

my_r_variable <- "a"
system2(
    'echo',
    args = c(my_r_variable, '-o image.png')
)

вернется:

 a -o image.png

что эквивалентно бегуecho в терминале. Вы также можете перенаправить вывод в текстовые файлы:

system2(
    'echo',
    args = c(my_r_variable, '-o image.png'),
    stdout = 'stdout.txt',
    stderr = 'stderr.txt'
)

Похожие вопросы