【发布时间】:2021-02-10 05:47:04
【问题描述】:
我正在尝试通过 rbindlist 将多个压缩文件读入一个数据表。在旧版本的 data.table() 中,这有效,并且仍然有效,但是现在它对每个文件都给出以下警告。
data.table::rbindlist(lapply(paste0("unzip -p ",filelist), data.table::fread,fill=T),idcol=T)
将 input= 作为系统命令 ('unzip -p ****') 并在传递给
input=的表达式中使用了一个变量。请使用 fread(cmd=...)。如果您正在创建应用程序,则存在安全问题,并且该应用程序可能有恶意用户,并且该应用程序未在安全环境中运行;例如该应用程序以 root 身份运行。请阅读 v1.11.6 的 NEWS 文件中的第 5 项,了解更多信息以及隐藏此消息的选项。
我了解其中的风险并希望隐藏这些消息。我看到了两种方法:1)打开一个标志来抑制 - 但我在手册中找不到选项; 2)将文件名明确指定为 fread cmd= 。但是我不确定如何在此处有效地循环列表。
抱歉,该示例不可重现,但思路应该很清楚 - 有什么建议吗?谢谢!
【问题讨论】:
-
为什么不简单地
data.table::rbindlist(lapply(paste0("unzip -p ", filelist), function(x) data.table::fread(cmd = x, fill=T)), idcol=T) -
这正是我想要的!谢谢!!
-
@polkas 请将您的评论作为 anwser 发表
标签: r cmd data.table lapply unzip