首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将IRanges列表作为列包含在data.frame中

将IRanges列表作为列包含在data.frame中
EN

Stack Overflow用户
提问于 2020-02-13 18:02:24
回答 1查看 149关注 0票数 1

我有一些数据的结构有点像这样:

代码语言:javascript
复制
x01 <- c("94633X94644Y95423X96130", "124240X124494Y124571X124714", "135654X135660Y136226X136786")

之后,我将其作为IRanges对象使用,通过如下步骤:

代码语言:javascript
复制
x02 <- sapply(x01,
              function(x) do.call(rbind,
                                  strsplit(strsplit(x,
                                                    split = "Y",
                                                    fixed = TRUE)[[1]],
                                           split = "X",
                                           fixed = TRUE)),
              simplify = FALSE,
              USE.NAMES = FALSE)

x03 <- sapply(x02,
              function(x) IRanges(start = as.integer(x[, 1L]),
                                  end = as.integer(x[, 2L])),
              simplify = FALSE,
              USE.NAMES = FALSE)

> x03
[[1]]
IRanges object with 2 ranges and 0 metadata columns:
          start       end     width
      <integer> <integer> <integer>
  [1]     94633     94644        12
  [2]     95423     96130       708

[[2]]
IRanges object with 2 ranges and 0 metadata columns:
          start       end     width
      <integer> <integer> <integer>
  [1]    124240    124494       255
  [2]    124571    124714       144

[[3]]
IRanges object with 2 ranges and 0 metadata columns:
          start       end     width
      <integer> <integer> <integer>
  [1]    135654    135660         7
  [2]    136226    136786       561

现在,我希望能够将x03存储为data.frame中的一个列,其中包含一些简单的信息,比如:

代码语言:javascript
复制
> x04 <- data.frame("col1" = 1:3,
                    "col2" = x01,
                    "col3" = x03)

这毫不奇怪地告诉我,我有不同的行数,但是,我觉得我已经看到JSON导入到R中,模仿了我想要的那种结构,其中一个衣衫褴褛的列表驻留在data.frame的列中。这可能是一次行动吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-13 18:16:01

这是一个很好的问题,我以前见过类似对象的其他数据格式,但我认为上面的问题行不通,因为只要有一个as.data.frame可以用于矩阵,或者IRanges,它就会搞乱维度,而不是嵌入它(我可能错了)。

一种选择是使用tibble:

代码语言:javascript
复制
x04 = tibble::tibble(x01=x01,x02=x02,x03=x03)
# A tibble: 3 x 3
  a                           b                 c        
  <chr>                       <list>            <list>   
1 94633X94644Y95423X96130     <chr[,2] [2 x 2]> <IRanges>
2 124240X124494Y124571X124714 <chr[,2] [2 x 2]> <IRanges>
3 135654X135660Y136226X136786 <chr[,2] [2 x 2]> <IRanges>

x04$x03
[[1]]
IRanges object with 2 ranges and 0 metadata columns:
          start       end     width
      <integer> <integer> <integer>
  [1]     94633     94644        12
  [2]     95423     96130       708

[[2]]
IRanges object with 2 ranges and 0 metadata columns:
          start       end     width
      <integer> <integer> <integer>
  [1]    124240    124494       255
  [2]    124571    124714       144

[[3]]
IRanges object with 2 ranges and 0 metadata columns:
          start       end     width
      <integer> <integer> <integer>
  [1]    135654    135660         7
  [2]    136226    136786       561

另一种选择:

代码语言:javascript
复制
library(S4Vectors)
DataFrame(x01=x01,x02=List(x02),x03=IRangesList(x03))
                          x01                             x02
                  <character>                          <List>
1     94633X94644Y95423X96130     94633:94644,95423:96130,...
2 124240X124494Y124571X124714 124240:124494,124571:124714,...
3 135654X135660Y136226X136786 135654:135660,136226:136786,...
                          x03
                <IRangesList>
1     94633-94644,95423-96130
2 124240-124494,124571-124714
3 135654-135660,136226-136786
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60213958

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档