【问题标题】:Change names of lists in list更改列表中列表的名称
【发布时间】:2020-04-26 06:55:34
【问题描述】:

我有一个包含元素“a”和“b”的列表,它们是长度从 2010-01-01 到 2020-03-03 的 xts 对象

>List
 $a         col1 col2
 2020-01-01 7.50 50000     
 2020-01-02 7.55 40000 
 $b         col1 col2
 2020-01-01 4.50 50000     
 2020-01-02 4.70 35000

然后我使用 split() 函数将它们按周拆分,输出如下:

>List
 $a[[1]]    col1  col2
 2020-01-01 7.50 50000
 $a[[2]]    col1  col2 
 2020-01-02 7.55 40000 
 $b[[1]]    col1  col2
 2020-01-01 4.50 50000
 $b[[2]]    col1  col2
 2020-01-02 4.70 35000

如何更改列表名称,因为从这个拆分函数我得到了我的元素名称的数字。 我正在寻找这个:

 >List
  $a          col1  col2
  2020-01-01  7.50 50000 
  $a          col1  col2 
  2020-01-02  7.55 40000
  $b          col1  col2
  2020-01-01  4.50 50000 
  $b          col1  col2
  2020-01-02  4.70 35000

【问题讨论】:

  • 你能用dput()显示你的数据吗List
  • dput 在这里是必需的。很难从打印输出中猜出结构。也许 unlist(List, recursive = FALSE)
  • 我的列表是包含 $a 和 $b 元素的列表。我使用了 split() 并得到了这个输出 - 列表列表。但我只想保留没有此 ID 的列表名称
  • 如果你运行dput(List),你会在你的控制台中得到一些输出。请将其复制并粘贴到您的帖子中,这样其他人会更容易关注您的问题

标签: r list


【解决方案1】:

也许你可以试试下面的代码

Listout<- setNames(unlist(lapply(List, function(x) split(x,seq(nrow(x)))),recursive = FALSE),
                   rep(names(List),sapply(List,nrow)))

这样

> Listout
$a
           col1  col2
2020-01-01  7.5 50000

$a
           col1  col2
2020-01-02 7.55 40000

$b
           col1  col2
2020-01-01  4.5 50000

$b
           col1  col2
2020-01-02  4.7 35000

数据

List <- list(a = data.frame(col1=c(7.5,7.55),col2 = c(5e4,4e4),row.names = c("2020-01-01","2020-01-02")),
             b = data.frame(col1=c(4.5,4.7),col2 = c(5e4,3.5e4),row.names = c("2020-01-01","2020-01-02")))

【讨论】:

    猜你喜欢
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    • 2011-09-29
    • 2015-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-20
    相关资源
    最近更新 更多