将数据框转换为包含 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、a
s 和 b
s.
,我在 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
我想将值从数据集转换为数值列表。
这是一个示例数据集:
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、a
s 和 b
s.
我在下面尝试过,但它并没有真正满足我的要求。
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