将 R 列表转换为 Pythonic 列表并输出为 txt 文件

Convert R list to Pythonic list and output as a txt file

我正在尝试像 Python 的列表一样转换这些列表。我用过这些代码

library(GenomicRanges)
library(data.table)
library(Repitools)    
pcs_by_tile<-lapply(as.list(1:length(tiled_chr)) , function(x){
                obj<-tileSplit[[as.character(x)]]
                if(is.null(obj)){
                  return(0)
                } else {
                  runs<-filtered_identical_seqs.gr[obj] 
                  df <- annoGR2DF(runs)
                  score = split(df[,c("start","end")], 1:nrow(df[,c("start","end")]))
                  #print(score)
                  return(score)
                }
                })
dt_text <- unlist(lapply(tiled_chr$score, paste, collapse=","))    
writeLines(tiled_chr, paste0("x.txt"))

以下代码行遍历DataFrame的每一行(只有2列)并将它们拆分到列表中。但是,它的输出与我想要的不同。

score = split(df[,c("start","end")], 1:nrow(df[,c("start","end")]))

但我想要以下有点输出:

[20350, 20355], [20357, 20359], [20361, 20362], ........

如果我正确理解你的问题,使用包 'sets' 中的 as.tuple 可能会有所帮助。代码可能如下所示

library(sets)

score = split(df[,c("start","end")], 1:nrow(df[,c("start","end")]))

....

df_text = unlist(lapply(score, as.tuple),recursive = F)

这将 return 一个看起来更像您正在寻找的元组(和零)的列表。您可以通过检查结果列表中每个元素的类型并删除与该类型匹配的元素来过滤掉零。例如,您可以这样做

df_text_trimmed <- df_text[!lapply(df_text, is.double)]

摆脱所有的零

编辑:现在我想起来了,如果您不想的话,您甚至可能不需要将数据帧转换为元组。您只需要确保在取消列出内容时包含 'recursive = F' 选项即可获得包含所需数字的 0 和数据帧列表。