当前项目的目的是在参与者每天多次填写问卷后,将他们的每日结果呈现出美观的可视化效果。
我决定使用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'环境变量。
有人知道如何解决此问题吗?
答案 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/"
。