【发布时间】:2020-08-03 11:09:32
【问题描述】:
我有 4 个不同长度的向量 (d1,d2,d3,d4),我从中创建这样的数据框
df <- data.frame(
x = c(
seq_along(d1),
seq_along(d2),
seq_along(d3),
seq_along(d4)
),
y = c(
d1,
d2,
d3,
d4
),
id = c(
rep("d1", times = length(d1)),
rep("d2", times = length(d2)),
rep("d3", times = length(d3)),
rep("d4", times = length(d4))
))
添加一个新向量意味着在 3 个不同的地方添加它,这是我想要避免的。
理想情况下,我想将d1,d2,d3,d4 传递给一个函数,然后返回数据框。
第一步似乎是将向量包装成一个列表并命名它们。
l <- list(d1,d2,d3,d4)
names(l) <- c("d1","d2","d3","d4")
但我正在努力处理可能应该与此类似的第二部分(伪代码)
df <- data.frame(
x = flatten(map(l, function(a) seq_along(a))),
y = flatten(l),
id = flatten(map(l, function(a) rep(a.name,times=length(a))))
)
从列表中构造数据框的正确方法是什么? 或者有更好的方法吗?
更新:出于演示目的,可以想象 d1..d4 是
d1 <- pnorm(seq(-2, 2, 0.05))-3
d2 <- pnorm(seq(-3, 3, 0.10))
d3 <- pnorm(seq(-1, 2, 0.05))-4
d4 <- pnorm(seq(-4, 3, 0.15))
【问题讨论】:
-
能否也分享一个向量样本?他们都是蹩脚的长度吗?
-
@Sotos 它们的长度不同。我添加了更多细节。