R 是否有方法通过列表中的变量将不同的函数应用于嵌套列表?
我有一个嵌套列表R 是否有方法通过列表中的变量将不同的函数应用于嵌套列表?,r,R,我有一个嵌套列表 length_group <- rep(c(1:11), length.out = 1000) age_group <- rep(c(3:13), length.out = 1000) trip_group <- rep(c(1:6), length.out = 1000) vehicle <- rep(c(1:5), length.out = 1000) value <- c(1:1000) value <- sample(value, s
length_group <- rep(c(1:11), length.out = 1000)
age_group <- rep(c(3:13), length.out = 1000)
trip_group <- rep(c(1:6), length.out = 1000)
vehicle <- rep(c(1:5), length.out = 1000)
value <- c(1:1000)
value <- sample(value, size = 10000, replace = TRUE)
df <- data.frame(length_group, age_group, trip_group, vehicle, value)
n_df <- df %>%
group_by(length_group, age_group, trip_group) %>%
nest()
length\u group由于您的行程组是一个整数,您可以执行以下操作:
MULT = c(0.9,0.45,0.5,0.8,0.7,1.0)
names(MULT) = 1:6
df %>% mutate(new_value = value * MULT[trip_group]) %>% head()
length_group age_group trip_group vehicle value new_value
1 1 3 1 1 355 319.50
2 2 4 2 2 743 334.35
3 3 5 3 3 315 157.50
4 4 6 4 4 839 671.20
5 5 7 5 5 769 538.30
6 6 8 6 1 452 452.00
df %>% mutate(new_value = value * MULT[as.character(trip_group)]) %>% head()
如果您的trip_组为character等,您可以执行以下操作:
MULT = c(0.9,0.45,0.5,0.8,0.7,1.0)
names(MULT) = 1:6
df %>% mutate(new_value = value * MULT[trip_group]) %>% head()
length_group age_group trip_group vehicle value new_value
1 1 3 1 1 355 319.50
2 2 4 2 2 743 334.35
3 3 5 3 3 315 157.50
4 4 6 4 4 839 671.20
5 5 7 5 5 769 538.30
6 6 8 6 1 452 452.00
df %>% mutate(new_value = value * MULT[as.character(trip_group)]) %>% head()
由于您的trip_组是一个整数,您可以执行以下操作:
MULT = c(0.9,0.45,0.5,0.8,0.7,1.0)
names(MULT) = 1:6
df %>% mutate(new_value = value * MULT[trip_group]) %>% head()
length_group age_group trip_group vehicle value new_value
1 1 3 1 1 355 319.50
2 2 4 2 2 743 334.35
3 3 5 3 3 315 157.50
4 4 6 4 4 839 671.20
5 5 7 5 5 769 538.30
6 6 8 6 1 452 452.00
df %>% mutate(new_value = value * MULT[as.character(trip_group)]) %>% head()
如果您的trip_组为character等,您可以执行以下操作:
MULT = c(0.9,0.45,0.5,0.8,0.7,1.0)
names(MULT) = 1:6
df %>% mutate(new_value = value * MULT[trip_group]) %>% head()
length_group age_group trip_group vehicle value new_value
1 1 3 1 1 355 319.50
2 2 4 2 2 743 334.35
3 3 5 3 3 315 157.50
4 4 6 4 4 839 671.20
5 5 7 5 5 769 538.30
6 6 8 6 1 452 452.00
df %>% mutate(new_value = value * MULT[as.character(trip_group)]) %>% head()
在base R中,您可以执行以下操作:
dat$value.mult <- dat$value * c(.9, .45, .5, .8, .7, 1)[factor(trip_group)]
head(dat)
# length_group age_group trip_group vehicle value value.mult
# 1 1 3 1 1 993 893.7
# 2 2 4 2 2 694 312.3
# 3 3 5 3 3 437 218.5
# 4 4 6 4 4 203 162.4
# 5 5 7 5 5 71 49.7
# 6 6 8 6 1 746 746.0
dat$value.mult在基本R中,您可以执行以下操作:
dat$value.mult <- dat$value * c(.9, .45, .5, .8, .7, 1)[factor(trip_group)]
head(dat)
# length_group age_group trip_group vehicle value value.mult
# 1 1 3 1 1 993 893.7
# 2 2 4 2 2 694 312.3
# 3 3 5 3 3 437 218.5
# 4 4 6 4 4 203 162.4
# 5 5 7 5 5 71 49.7
# 6 6 8 6 1 746 746.0
dat$value.mult