在一个小标题中,我的值是另一个小标题中的变量名称。 我需要快速列出第一个小标题的每一行中包含的列名称的第二个小标题中特定行中的值。我该怎么办?
我的数据具有以下形式:
# Observations in is tibble says which variables of the tibble_b occurred at each case:
tibble_a <- tribble(
~a, ~b, ~c,
4, 2, 5,
4, 3, 1,
2, 5, 5
)
# This tibble contains values for the variables at different times:
tibble_b <- tribble(
~`1`, ~`2`, ~`3`, ~`4`, ~`5`,
100, 112, 98, 107, 85,
71, 76, 97, 80, 15,
2, 61, 54, 37, 42
)
我需要创建一个小标题,其中包含
tibble_b
中第一个数字的值,比方说,第一行,对于 tibble_a
中的所有行。也就是说,基本上,要获取此表格数据:
a | b | c |
---|---|---|
107 | 112 | 85 |
107 | 98 | 100 |
112 | 85 | 85 |
我的问题是,
tibble_a
有数十万行,当然,两者都有更多列。由于我必须对tibble_b
的行索引的多个样本进行测试和比较,因此使用for(current_row in 1:nrow(tibble_a)) { for(current_col in 1:3) tibble_of_results[[current_row, current_col]] <- tibble_b[[1, tibble_a[[current_row, current_col]]]] }
之类的东西非常耗时。
有人可以建议任何有效的方法来完成这项任务吗?
这是使用
purrr
包的函数式编程方法:
fetch_values <- function(row) {
map_dbl(tibble_a[row, ], ~tibble_b[[1, .x]])
}
map_dfr(seq_len(nrow(tibble_a)), fetch_values)
A tibble: 3 × 3
a b c
<dbl> <dbl> <dbl>
1 107 112 85
2 107 98 100
3 112 85 85