我有一个可执行的C程序(./saucy),我从运行Saucy的makefile获得(源代码here)
正在运行./saucy graphfile
获取输出
(0 2)(3 4)
(0 1)(2 4)
如何从R脚本中调用它?在阅读this post之后,我还在挠头。
答案 0 :(得分:3)
我只将saucy
命令行包装到同名的R函数中,并且只在macOS和Ubuntu上测试它,但它跟踪你的样本输出。
通过“包裹”我的意思是它不会调用二进制文件,它是一个从R调用的C函数。剥离cmdline cruft并不困难。作者做了相当不错的工作。
devtools::install_github("hrbrmstr/saucy")
library(saucy)
第一个示例文件:
graph1 <- saucy::saucy(system.file("extdata", "graphfile", package="saucy"))
graph1
## (0 2)(3 4)
## (0 1)(2 4)
##
## input_file: graphfile
## vertices: 5
## edges: 5
## group_size_base: 1
## group_size_exp: 1
## levels: 3
## nodes: 7
## generators: 2
## total_support: 8
## average_support: 4
## nodes_per_generator: 3.5
## bad_nodes: 0
str(graph1)
## List of 13
## $ input_file : chr "/Library/Frameworks/R.framework/Versions/3.4/Resources/library/saucy/extdata/graphfile"
## $ vertices : int 5
## $ edges : int 5
## $ group_size_base : num 1
## $ group_size_exp : int 1
## $ levels : int 3
## $ nodes : int 7
## $ generators : int 2
## $ total_support : int 8
## $ average_support : num 4
## $ nodes_per_generator: num 3.5
## $ bad_nodes : int 0
## $ printed_output : chr [1:2] "(0 2)(3 4)" "(0 1)(2 4)"
## - attr(*, "class")= chr [1:2] "saucy" "list"
第二个示例文件:
graph2 <- saucy::saucy(system.file("extdata", "graphfile2", package="saucy"))
graph2
## (3 5)
## (3 6)(4 5)
## (0 1)
## (0 2)
##
## input_file: graphfile2
## vertices: 7
## edges: 7
## group_size_base: 4.8
## group_size_exp: 1
## levels: 5
## nodes: 13
## generators: 4
## total_support: 10
## average_support: 2.5
## nodes_per_generator: 3.25
## bad_nodes: 0
str(graph2)
## List of 13
## $ input_file : chr "/Library/Frameworks/R.framework/Versions/3.4/Resources/library/saucy/extdata/graphfile2"
## $ vertices : int 7
## $ edges : int 7
## $ group_size_base : num 4.8
## $ group_size_exp : int 1
## $ levels : int 5
## $ nodes : int 13
## $ generators : int 4
## $ total_support : int 10
## $ average_support : num 2.5
## $ nodes_per_generator: num 3.25
## $ bad_nodes : int 0
## $ printed_output : chr [1:4] "(3 5)" "(3 6)(4 5)" "(0 1)" "(0 2)"
## - attr(*, "class")= chr [1:2] "saucy" "list"
shatter
也被包裹。
我还可以在某些时候使用真正的图形结构与读取序列化结构,但我不知道这个库/工具有多受欢迎,所以不能提交时间框架。