R 从变量组合创建数据框
我试图在R中创建一个数据帧。我有两种方法和两种类型。我的增益是一个有5个值的向量。就像对于R 从变量组合创建数据框,r,dataframe,R,Dataframe,我试图在R中创建一个数据帧。我有两种方法和两种类型。我的增益是一个有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
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
我们可以使用
交叉
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
frombase 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\u train我们可以使用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
frombase 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\u train您可以使用rep
重复这些值,并指定使用每个值重复这些值的次数
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))
error\u table您可以使用rep
重复这些值,并指定使用每个值重复这些值的次数
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))
error\u table由于您已经将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
列中的值只是用于说明的假设数字因为您已经将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
注:增益
列中的值仅为假设数字,用于说明给定的四个增益向量。然后,您可以尝试构造一个嵌套列表,并取消它两次
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
library(tidyr)
列表(“规则A”=列表(“训练增益”=训练增益,“测试增益”=测试增益”),
“规则B”=列表(“训练增益”=训练增益,“测试增益”=训练增益”)%>%
tibble::enframe()%>%
unnest_longer(值,值至“增益”,索引至“类型”)%>%
不耐烦(增益)
##tibble:20 x 3
#名称增益类型
#
#1规则A 1列车增益
#2规则A 1.2列车增益
#3规则A 1.5列车增益
#4规则A 1.7列车增益
#5规则A 2列车增益
#6规则A 1.4测试增益
#7规则A 1.6测试增益
#8规则A 1.8测试增益
#9规则A 1.4测试增益
#10规则A 2.4测试增益
#11规则B 1列车增益
#12规则B 1.2列车增益
#13规则B 1.5列车增益
#14规则B 1.7列车增益
#15规则B 2列车增益
#16规则B 1.4测试增益
#17规则B 1.6测试增益
#18规则B 1.8测试增益
#19规则B 1.4测试增益
#20规则B 2.4测试增益
数据
给定四个增益向量,一个增益序列。然后,您可以尝试构造一个嵌套列表,并取消它两次
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
library(tidyr)
列表(“规则A”=列表(“训练增益”=训练增益,“测试增益”=测试增益”),
“规则B”=列表(“训练增益”=训练增益,“测试增益”=训练增益”)%>%
tibble::enframe()%>%
unnest_longer(值,值至“增益”,索引至“类型”)%>%
不耐烦(增益)
##tibble:20 x 3
#名称增益类型
#
#1规则A 1列车增益
#2规则A 1.2列车增益
#3规则A 1.5列车增益
#4规则A 1.7列车增益
#5规则A 2列车增益
#6规则A 1.4测试增益
#7规则A 1.6测试增益
#8规则A 1.8测试增益
#9规则A 1.4测试增益
#10规则A 2.4测试增益
#11规则B 1列车增益
#12规则B 1.2列车增益
#13规则B 1.5列车增益
#14规则B 1.7列车增益
#15规则B 2列车增益
#16规则B 1.4测试增益
#17规则B 1.6测试增益
#18规则B 1.8测试增益
#19规则B 1.4测试增益
#20规则B 2.4测试增益
数据
a\u gain\u train这不符合预期。它给出的结果类似于规则A Train Gain xx Rule A Test Gain xx Rule B Train Gain xx Rule B Test Gain xx和这样的循环。@kbs您只需使用Gain Train
和Gain Test
@kbsGain
中的值似乎被复制。你能检查一下吗?这不符合预期。它给出的结果类似于规则A Train Gain xx Rule A Test Gain xx Rule B Train Gain xx Rule B Test Gain xx和这样的循环。@kbs您只需使用Gain Train
和Gain Test
@kbsGain
中的值似乎被复制。你能检查一下吗