Pandoc编织.Rmd文件时出现问题(Raspbian)

时间:2020-01-05 15:31:19

标签: php apache raspberry-pi r-markdown pandoc

当前项目的目的是在参与者每天多次填写问卷后,将他们的每日结果呈现出美观的可视化效果。

我决定使用R来计算数据,并使用Rmarkdown来获得可视化效果。这一切都应该在Raspberry Pi上进行。我使用PHP文件在网络服务器(Raspberry)上创建了一个.csv文件(其中包含参与者的问卷调查数据)。此PHP文件还应运行Rscript,然后依次运行rmarkdown命令,如下所示:

rmarkdown::render(input = "Testplot.Rmd", output_file = paste0("results_", ID, ".html"), params = (list(ID = ID)))

因此,如果我手动(通过SSH)运行Rscript,一切都会按预期运行,并且results_ID.html正确生成。

现在的问题是:如果参与者填写调查表并提交数据,则PHP文件使用exec("Rscript /var/www/html/cmdRmd.R, $ID")运行Rscript,我总是会收到Pandoc产生的错误消息:

with_pandoc_safe_environment(system(paste(shQuote(path),“ --version”),)中的错误: 在运行Pandoc之前,必须设置'HOME'环境变量。 调用:... FUN-> get_pandoc_version-> with_pandoc_safe_environment。 执行停止

我的猜测是,它与apache的www-data用户有关(在通过问卷提交数据时将使用该用户)。但是我不知道如何为www-data用户设置'HOME'环境变量。

有人知道如何解决此问题吗?

1 个答案:

答案 0 :(得分:0)

您可以像 import io import pandas as pd from pathlib_mate import Path n_lines_per_df = 10 n_df = 3 columns = ["id", "value"] value = "alice@example.com" f = Path(__file__).change(new_basename="big-json-file.json") if not f.exists(): for nth_df in range(n_df): data = list() for nth_line in range(nth_df * n_lines_per_df, (nth_df + 1) * n_lines_per_df): data.append((nth_line, value)) df = pd.DataFrame(data, columns=columns) buffer = io.StringIO() df.to_json( buffer, orient="records", lines=True, ) with open(f.abspath, "a") as file: file.write(buffer.getvalue()) 一样在 R 中设置您的环境。确保它对应于您的 shell 中的 Sys.setenv(HOME="/home/YOURHOME/"