r - 将 lapply/for 循环与系统函数一起用于批处理终端命令
问题描述
我开始更多地在我的机器上使用终端,并希望创建一个工作流程,让我可以更好地控制更多重复性任务。我的问题是,我可以使用这个system
函数,它接受一个字符串并在一个循环中通过终端运行它吗?我的挂断是在一个字符串上循环。我的想法是使用胶水包,但我想知道是否有一个基本功能或比调用外部包更好的方法?
library(glue)
setwd(path_to_files)
dir.create('pdf')
all_files <- list.files()
lapply(all_files, function(x){
system('sytsunoconv -f [format] pdf {x}.pptw')
})
解决方案
在迭代循环中使用system
应该不是问题。要创建命令向量,您可以使用基本 Rpaste
或paste0
,尽管glue
在处理更复杂的字符串时可能很有用。
创建一个命令向量就像paste("say", 1:5)
返回一样简单[1] "say 1" "say 2" "say 3" "say 4" "say 5"
。您可以在for
循环中使用它system
来按顺序运行每个:
for (command in paste("say", 1:5)) {
system(command)
}
如果您在 Mac 上,您应该听到每个数字的 TTS 发音。
您应该能够为您的示例使用相同的模式,例如:
for (command in paste0('sytsunoconv -f [format] pdf ', list.files(), ".pptw")) {
system(command)
}
请注意,我paste0
在这里使用以避免不必要的空格。
推荐阅读
- android - Android 资源链接失败 datetimepicker attrs 未找到
- c# - 在 Unity 中沿光线投射实例化预定义数量的对象
- swift - 如何正确地将按键发送到 BG 应用程序,而 swift 脚本和编译的 swiftc 二进制文件之间没有区别
- sql - 如何计算非连续行之间经过的时间?
- android - 如何在 Firebase 应用中实现单设备登录?
- encoding - 将 int 列表解码为 utf8 时出现问题
- sql - SQL 数据透视表问题列值分成多列
- c - 如何配置 Codelite 以根据 C18 标准编译 C 程序
- python - 如何从 XGBoost 模型中导出预测?
- html - 我试过制作一个响应式表格,但它不起作用,我该如何解决这个问题?