【问题标题】:export objects from R, so they can be imported into a Python script从 R 导出对象,因此可以将它们导入 Python 脚本
【发布时间】:2021-03-28 21:10:10
【问题描述】:

我对 R 不太了解,但我有一个用 R 编写的脚本。该脚本的作用是基于时间序列,它创建一个如下表所示的表格。

我设法分析了多个时间序列并将所有表创建为 R 中的对象。我当然可以将这些单独写入一个我可以用 Python 读取的 excel 文件,但这不是很方便,因为我有几个数百个这样的表。

这些表对象具有以下类:

我试图将它们放入某种字典中,其中每个表在导入 python 后都可以单独调用。然后我找到了一个可以将对象导出到 RData 的选项。这很完美,我可以导入 python,但我不知道如何为所有表自动执行此操作。

save(cluster0,cluster1,cluster2, file = "/Users/jerjely/Desktop/burst.RData")

我发现的另一个选项是保存所有内容,如下所示:

save.image(file = "/Users/jerjely/Desktop/bursts.RData")

但是我无法读入 python,因为它有无法识别的对象。我假设是因为 R 中定义的函数。

总而言之,如果有人能告诉我如何将所有表格的列表填写到第一个命令中,我将非常高兴。或者我的另一个想法是是否可以删除函数和对象,所以我可以只导出所需的对象。

非常感谢任何帮助!

非常感谢!

【问题讨论】:

    标签: python r export


    【解决方案1】:

    有这个:Loading .RData files into Python,也许更现代,这个:How to load R's .rdata files into Python?

    搜索 python read rdata 给了我很多结果。

    对于简单的结构,json 很好。

    
    library(jsonlite)
    
    l <- list(
        cluster1, cluster2, cluster3
    )
    
    cat(
        toJSON( l ),
        file="/some/file.json"
    )
    
    

    然后改为阅读。 Python 读取 json 作为早餐。

    我注意到这不会保留列名。 (可能也不是行名):

    我没有你的数据,所以再去抓那些可怜的花:

    l <- rep(list(head(as.matrix(iris[,1:4]))), 3 )
    cat( toJSON( l, pretty=T ) )
    
    
    [
      [
        [5.1, 3.5, 1.4, 0.2],
        [4.9, 3, 1.4, 0.2],
        [4.7, 3.2, 1.3, 0.2],
        [4.6, 3.1, 1.5, 0.2],
        [5, 3.6, 1.4, 0.2],
        [5.4, 3.9, 1.7, 0.4]
      ],
      [
        [5.1, 3.5, 1.4, 0.2],
        [4.9, 3, 1.4, 0.2],
        [4.7, 3.2, 1.3, 0.2],
        [4.6, 3.1, 1.5, 0.2],
        [5, 3.6, 1.4, 0.2],
        [5.4, 3.9, 1.7, 0.4]
      ],
      [
        [5.1, 3.5, 1.4, 0.2],
        [4.9, 3, 1.4, 0.2],
        [4.7, 3.2, 1.3, 0.2],
        [4.6, 3.1, 1.5, 0.2],
        [5, 3.6, 1.4, 0.2],
        [5.4, 3.9, 1.7, 0.4]
      ]
    ]
    

    现在如果你将这些数组转换为 data.frame,你会得到这个结构,在 python 中使用它可能更容易吗?

    l <- rep(list(head(as.data.frame(iris[,1:4]))), 3 )
    cat( toJSON( l, pretty=T ) )
    
    

    变成这样:

    
    [
      [
        {
          "Sepal.Length": 5.1,
          "Sepal.Width": 3.5,
          "Petal.Length": 1.4,
          "Petal.Width": 0.2
        },
        {
          "Sepal.Length": 4.9,
          "Sepal.Width": 3,
          "Petal.Length": 1.4,
          "Petal.Width": 0.2
        },
        {
          "Sepal.Length": 4.7,
          "Sepal.Width": 3.2,
          "Petal.Length": 1.3,
          "Petal.Width": 0.2
        },
        {
          "Sepal.Length": 4.6,
          "Sepal.Width": 3.1,
          "Petal.Length": 1.5,
          "Petal.Width": 0.2
        },
        {
          "Sepal.Length": 5,
          "Sepal.Width": 3.6,
          "Petal.Length": 1.4,
          "Petal.Width": 0.2
        },
        {
          "Sepal.Length": 5.4,
          "Sepal.Width": 3.9,
          "Petal.Length": 1.7,
          "Petal.Width": 0.4
        }
      ],
      [
        {
          "Sepal.Length": 5.1,
          "Sepal.Width": 3.5,
          "Petal.Length": 1.4,
          "Petal.Width": 0.2
        },
        {
          "Sepal.Length": 4.9,
          "Sepal.Width": 3,
          "Petal.Length": 1.4,
          "Petal.Width": 0.2
        },
        {
          "Sepal.Length": 4.7,
          "Sepal.Width": 3.2,
          "Petal.Length": 1.3,
          "Petal.Width": 0.2
        },
        {
          "Sepal.Length": 4.6,
          "Sepal.Width": 3.1,
          "Petal.Length": 1.5,
          "Petal.Width": 0.2
        },
        {
          "Sepal.Length": 5,
          "Sepal.Width": 3.6,
          "Petal.Length": 1.4,
          "Petal.Width": 0.2
        },
        {
          "Sepal.Length": 5.4,
          "Sepal.Width": 3.9,
          "Petal.Length": 1.7,
          "Petal.Width": 0.4
        }
      ],
      [
        {
          "Sepal.Length": 5.1,
          "Sepal.Width": 3.5,
          "Petal.Length": 1.4,
          "Petal.Width": 0.2
        },
        {
          "Sepal.Length": 4.9,
          "Sepal.Width": 3,
          "Petal.Length": 1.4,
          "Petal.Width": 0.2
        },
        {
          "Sepal.Length": 4.7,
          "Sepal.Width": 3.2,
          "Petal.Length": 1.3,
          "Petal.Width": 0.2
        },
        {
          "Sepal.Length": 4.6,
          "Sepal.Width": 3.1,
          "Petal.Length": 1.5,
          "Petal.Width": 0.2
        },
        {
          "Sepal.Length": 5,
          "Sepal.Width": 3.6,
          "Petal.Length": 1.4,
          "Petal.Width": 0.2
        },
        {
          "Sepal.Length": 5.4,
          "Sepal.Width": 3.9,
          "Petal.Length": 1.7,
          "Petal.Width": 0.4
        }
      ]
    ]
    

    【讨论】:

    • 谢谢!您能告诉我如何自动添加该列表中的所有集群吗?例如,在我现在运行的分析中,我有 535。我尝试的方法是 mylist
    • sure: l &lt;- lapply( 0:534, function(i){ get(paste0("cluster",i)) } ) # 应该可以解决问题,我假设它们被称为 cluster0 - cluster534
    • 非常感谢!
    • 注意我有一个太多的list(),这不是必需的,lapply 已经处理好了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-08
    • 1970-01-01
    • 2016-10-25
    • 1970-01-01
    • 2019-06-03
    • 2019-05-07
    • 2020-03-23
    相关资源
    最近更新 更多