【问题标题】:Turn all data.table rows into a list R将所有 data.table 行转换为列表 R
【发布时间】:2017-04-21 17:11:57
【问题描述】:

从以下data.table开始:

set.seed(1234)
dt <- data.table(x = runif(3), y = runif(3), z = runif(3))

print(dt)
#         x         y           z
#1: 0.1137034 0.6233794 0.009495756
#2: 0.6222994 0.8609154 0.232550506
#3: 0.6092747 0.6403106 0.666083758

并将其变成如下结构的列表:

print(dt2)
#[[1]]
#[1] 0.1137034 0.6233794 0.009495756
#
#[[2]]
#[1] 0.6222994 0.8609154 0.2325505
#
#[[3]]
#[1] 0.6092747 0.6403106 0.6660838

我一直在研究this question 的答案,但无法弄清楚如何在不应用循环函数的情况下一次对 data.table 的所有行执行此操作。由于实际 data.table 中的行数,我试图避免循环函数。

【问题讨论】:

    标签: r list data.table


    【解决方案1】:

    你可以使用data.table::transpose()函数:

    transpose(as.list(dt))
    
    #[[1]]
    #[1] 0.113703411 0.623379442 0.009495756
    
    #[[2]]
    #[1] 0.6222994 0.8609154 0.2325505
    
    #[[3]]
    #[1] 0.6092747 0.6403106 0.6660838
    

    【讨论】:

    • 谢谢,这让我成功了 99%!为了得到我正在寻找的东西,我需要unname 这样:unname(as.list(transpose(dt))
    • 这是一个不错的选择。我更新了一个不同的版本,它节省了 unname 的使用。
    猜你喜欢
    • 2016-03-13
    • 2020-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多