我试图在R中创建一个数据框。我有2种方法和2种类型。我的收获是一个具有5个值的向量。例如对于a_gain_train
类型的规则A的train_gain
,我有5个值。
error_table = data.frame(
Method = c("Rule A", "Rule A", "Rule B", "Rule B"),
type = c("train_gain", "test_gain", "train_gain", "test_gain"),
gain = c(a_gain_train, a_gain_test, b_gain_train, b_gain_test)
)
我需要创建一个像这样的数据框
Methode type gain
Rule A train_gain 1
Rule A train_gain 1.2
Rule A train_gain 1.5
Rule A train_gain 1.7
Rule A train_gain 2
Rule A test_gain 1.4
Rule A test_gain 1.6
Rule A test_gain 1.8
Rule A test_gain 1.4
Rule A test_gain 2.4
Rule B train_gain 1
Rule B train_gain 1.2
Rule B train_gain 1.5
Rule B train_gain 1.7
Rule B train_gain 2
Rule B test_gain 1.4
Rule B test_gain 1.6
Rule B test_gain 1.8
Rule B test_gain 1.4
Rule B test_gain 2.4
答案 0 :(得分:0)
我们可以使用crossing
library(tidyr)
library(dplyr)
crossing(Methode = c('Rule A', 'Rule B'), type = c('train_gain', 'test_gain')) %>%
mutate(gain = rep(list(gain_train, gain_test), 2)) %>%
unnest(c(gain))
或者使用expand.grid
中的base R
transform(expand.grid(Methode = c('Rule A', 'Rule B'),
gain = c(gain_train, gain_test)),
type = rep(c('train_gain', 'test_gain'), each = 5))
其中
gain_train <- c(1, 1.2, 1.5, 1.7, 2)
gain_test <- c(1.4, 1.6, 1.8, 1.4, 2.4)
答案 1 :(得分:0)
您可以使用rep
重复这些值,并使用each
指定要重复多少次。
error_table <- data.frame(
Method = rep(c("Rule A", "Rule B"), each = 10),
type = rep(c("train_gain","test_gain","train_gain","test_gain"), each = 5),
gain=c(a_gain_train,a_gain_test,b_gain_train,b_gain_test))
答案 2 :(得分:0)
既然您已经将这4个列表另存为单独的变量,请使用简单的rbind
rbind(data.frame(Method="RULE A", type="train_gain",gain=a_gain_train),
data.frame(Method="RULE A", type="test_gain",gain=a_gain_test),
data.frame(Method="RULE B", type="train_gain",gain=b_gain_train),
data.frame(Method="RULE B", type="test_gain",gain=b_gain_test))
输出
Method type gain
1 RULE A train_gain 1
2 RULE A train_gain 2
3 RULE A train_gain 3
4 RULE A train_gain 4
5 RULE A train_gain 5
6 RULE A test_gain 2
7 RULE A test_gain 3
8 RULE A test_gain 4
9 RULE A test_gain 5
10 RULE A test_gain 6
11 RULE B train_gain 10
12 RULE B train_gain 11
13 RULE B train_gain 12
14 RULE B train_gain 13
15 RULE B train_gain 14
16 RULE B test_gain 19
17 RULE B test_gain 20
18 RULE B test_gain 21
19 RULE B test_gain 22
20 RULE B test_gain 23
注意:gain
列中的值只是用于说明的假设数字
答案 3 :(得分:0)
给出四个增益向量。然后,您可以尝试构造一个嵌套列表并将其取消嵌套两次。
return Container(
height: MediaQuery.of(context).size.height,
child: Stack(
fit: StackFit.expand,
children: <Widget>[
数据
library(tidyr)
list("Rule A" = list("train_gain" = a_gain_train, "test_gain" = a_gain_test),
"Rule B" = list("train_gain" = b_gain_train, "test_gain" = b_gain_test)) %>%
tibble::enframe() %>%
unnest_longer(value, values_to = "gain", indices_to = "type") %>%
unnest(gain)
# # A tibble: 20 x 3
# name gain type
# <chr> <dbl> <chr>
# 1 Rule A 1 train_gain
# 2 Rule A 1.2 train_gain
# 3 Rule A 1.5 train_gain
# 4 Rule A 1.7 train_gain
# 5 Rule A 2 train_gain
# 6 Rule A 1.4 test_gain
# 7 Rule A 1.6 test_gain
# 8 Rule A 1.8 test_gain
# 9 Rule A 1.4 test_gain
# 10 Rule A 2.4 test_gain
# 11 Rule B 1 train_gain
# 12 Rule B 1.2 train_gain
# 13 Rule B 1.5 train_gain
# 14 Rule B 1.7 train_gain
# 15 Rule B 2 train_gain
# 16 Rule B 1.4 test_gain
# 17 Rule B 1.6 test_gain
# 18 Rule B 1.8 test_gain
# 19 Rule B 1.4 test_gain
# 20 Rule B 2.4 test_gain