【问题标题】:R passing data frame to another program using system()R使用system()将数据帧传递给另一个程序
【发布时间】:2012-08-15 15:40:42
【问题描述】:

我有一个使用system() 传递给另一个程序的数据框。在当前设置中,我首先将数据框的内容写入文本文件,然后让system() 命令查找创建的文本文件。

df1 <- runif(20)
write(df1, file="file1.txt")
system("myprogram file1.txt")

我有两个问题:

1) 有没有办法直接传递数据帧而不写文本文件?

2)如果没有,有没有办法将内存中的数据作为文本格式的实体传递而不将文件写入磁盘?

感谢您的任何建议。

【问题讨论】:

  • 一个典型的数据框有多长?一种选择是将数据作为参数传递给命令,但我认为您已经完成的可能更干净。

标签: r input stdin


【解决方案1】:

您可以写入任何 R 调用的连接,包括网络套接字。

因此进程 A 可以写入网络,而进程 B 可以读取它而无需涉及任何磁盘文件,请参阅 help(connections),它甚至在“示例”部分中有一个工作示例。

您在这里的一般主题是序列化,而 R 会为您完成。您还可以使用对有关您的数据结构的元数据进行编码的工具以这种方式将数据传递给其他程序,例如 Google 的 Protocol Buffers(在 R 中由 RProtoBuf 包支持)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-01
    • 1970-01-01
    • 2013-04-01
    • 1970-01-01
    • 2020-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多