【问题标题】:Convert dataframe to list with numeric vectors in r使用 r 中的数字向量将数据框转换为列表
【发布时间】:2021-05-05 19:36:11
【问题描述】:

我想将数据集的值转换为数值列表。

这是一个示例数据集:

df <- data.frame(
  a = c(5.5, 6, 7),
  b = c(1.1, 2.5, 3.5))

# convert dataframe to list
df.list <- split(df, seq(nrow(df)))

该列表在 R 环境中类似于上面的列表。通过去掉 $s、as 和 bs,我在 R 环境中所需的输出如下所示。

我在下面尝试了这个,但它并没有真正提供我想要的。

for (i in 1:length(df.list)) {
  df.list[[i]] <- lapply(df.list[[i]], function(x) as.numeric(as.character(df.list[[i]])))
  
}

有人有什么想法吗?

谢谢!

【问题讨论】:

    标签: r list numeric


    【解决方案1】:

    我们可以从base R 使用asplit。将 MARGIN 指定为 1 表示行,2 表示按列拆分

    out <- lapply(asplit(unname(df), 1), as.vector)
    str(out)
    #List of 3
    #$ : num [1:2] 5.5 1.1
    #$ : num [1:2] 6 2.5
    #$ : num [1:2] 7 3.5
    

    或者另一个选项是apply

    out2 <- do.call(c, apply(unname(df), 1, list)) 
    identical(out, out2)
    #[1] TRUE
    

    从OP的split,我们可以unlist列表元素

    out3 <- lapply(unname(df.list), unlist, use.names = FALSE)
    identical(out, out3)
    #[1] TRUE
    

    【讨论】:

    • 感谢您的快速周转。很棒的解决方案。我选择了第一个。
    猜你喜欢
    • 2021-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多