我有3个列表,我想将它们组合成一个数据框,其中每列都是列表的元素。
有3个列表(ld是值为112的nummeric)
ld <- 112
# 3 lists
or <- as.list(rep(0, 8))
thetax <- lapply(0:7, function(x) ld * cos (x * pi / 4))
thetay <- lapply(0:7, function(x) ld * sin (x * pi / 4))
这是我尝试将它们组合成data.frame
df3 <- data.frame(or, thetax, thetay)
我认为这应该是非常简单和基本但我无法做到。
我一直在寻找几个小时的答案并且一直在尝试不同的事情,但到目前为止似乎没有任何工作,我无法执行它。
答案 0 :(得分:4)
您无法使用列表列创建Map msgMap=new HashMap();
msgMap.put("partnerId", partnerId);
Message msg=MessageBuilder.withPayload(msgMap).build();
List<QueueConfiguration> qc= partnerService.findConfig(msg);
这一事实是一个长期的烦恼。按优先顺序递减,您可以
请改用data.frame
包中的data_frame
。
tibble
按照David Arenburg的建议,创建一个包含维度的列表,然后将其转换为数据框。
tibble::data_frame(or, thetax, thetay)
创建数据框,然后添加列表列。
data.frame(cbind(or, thetax, thetay))
使用df3 <- data.frame(1:8)[,FALSE]
df3$or <- or
df3$or <- thetax
df3$or <- thetay
制作数据框。
structure
答案 1 :(得分:2)
我可能会遗漏一些东西,但我认为这可以作为向量而不是列表。这对你有用吗,还是我偏离目标?
x <- 0:7
ld <- 112
or <- rep(0, 8)
thetax <- ld * cos (x * pi / 4)
thetay <- ld * sin (x * pi / 4)
df3 <- data.frame( or, thetax, thetay )
答案 2 :(得分:1)
我意识到你已经接受了答案,但是没有简单的方法可以从列表中创建data.frame。 使用您的示例的直接方式是:
ld <- 112
or <- as.list(rep(0, 8))
thetax <- lapply(0:7, function(x) ld * cos (x * pi / 4))
thetay <- lapply(0:7, function(x) ld * sin (x * pi / 4))
df <- as.data.frame(do.call("cbind",list(or, thetax, thetay)))
df
V1 V2 V3
1 0 112 0
2 0 79.19596 79.19596
3 0 6.858022e-15 112
4 0 -79.19596 79.19596
5 0 -112 1.371604e-14
6 0 -79.19596 -79.19596
7 0 -2.057407e-14 -112
8 0 79.19596 -79.19596