将数据框转换为包含 r 中的数字向量的列表

Convert dataframe to list with numeric vectors in r

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

这是一个示例数据集:

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]])))
  
}

有人有什么想法吗?

谢谢!

我们可以使用 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