【问题标题】:How can I create 2 data.frame columns from a list of tuples?如何从元组列表中创建 2 个 data.frame 列?
【发布时间】:2017-08-25 10:51:54
【问题描述】:

我有一个元组列表作为 Python 程序的输出,并希望将 R 用于一些数据图表。

所以从[(1,2),(3,4),(0,9)]的python列表中,我想来一个Rdata.frame

x y
1 2
3 4
0 9

我似乎无法找到一个简单的方法来做到这一点。

【问题讨论】:

  • R 脚本的输入是什么?一个字符串?还是什么?
  • 目前我只是将我的 python 列表打印到标准输出,所以我可能将一个字符串通过管道传输到 R,是的
  • 如何将其转换为 python 中的适当表格,然后存储为 feather 或 csv 并将其读入 R?

标签: r dataframe tuples


【解决方案1】:

如果你想要一个数字输出,使用 strsplit...

inp <- "[(1,2),(3,4),(0,9)]"
out <- gsub("(^\\[\\()|(\\)\\]$)", "", strsplit(inp, "\\)\\,\\(")[[1]])
out <- do.call(rbind, lapply(out, (function(el){
  as.numeric(strsplit(el, "\\,")[[1]])
})))
out

结果是

    [,1] [,2]
[1,]    1    2
[2,]    3    4
[3,]    0    9

【讨论】:

    【解决方案2】:

    如果输入是字符串,你可以试试:

    x="[(1,2),(3,4),(0,9)]"
    
    x <- strsplit(gsub("\\[|\\(|\\)|\\]", "", x),",")[[1]]
    
    cbind.data.frame(x=x[c(TRUE,FALSE)],y=x[c(FALSE,TRUE)])
    

    【讨论】:

      猜你喜欢
      • 2018-08-22
      • 2021-08-16
      • 1970-01-01
      • 1970-01-01
      • 2011-08-29
      • 2019-03-15
      • 2022-12-08
      • 1970-01-01
      • 2022-10-18
      相关资源
      最近更新 更多