r - 使用行列索引对从数据框中的不同列中选择值的 Tidyverse 方法

标签 r dataframe tidyverse tibble

在 R 中,我有一个字符向量 v,其值是数据帧 raincolnames(rain) 的所有元素。我想使用 v 创建一个新向量 chosen 其值满足 chosen[i] == rain[i, v[i]]无需诉诸循环,最好使用 tidyverse 方法。

例如,如果我有:

library(tidyverse)
rain <- tibble(ceres = c(0, 1, 0, 1.5, 3),
               mond = c(0, 0, 0.5, 0, 0),
               els = c(1, 2, 1, 0, 1))

v <- c("els", "ceres", "els", "mond", "ceres")

我希望在选择中返回:

> chosen
# els ceres   els  mond ceres 
#    1     1     1     0     3

最佳答案

你可以做

rain %>%
  mutate(id = row_number()) %>%
  pivot_longer(-id) %>%
  inner_join(tibble(id = seq_along(v), name = v)) 

返回

# A tibble: 5 x 3
     id name  value
  <int> <chr> <dbl>
1     1 els       1
2     2 ceres     1
3     3 els       1
4     4 mond      0
5     5 ceres     3

添加

pull(value, name)

返回命名向量

#>  els ceres   els  mond ceres 
#>    1     1     1     0     3 

关于r - 使用行列索引对从数据框中的不同列中选择值的 Tidyverse 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68713330/

相关文章:

R - 使用 rvest 进行网页抓取

python - 按日期之间的最小绝对差按组选择行

scala - 如何使用scala将Spark DataFrame中的每一行分成多行

r - 使用 ggplot2 将一组列与另一组列进行比较

r - 如何分隔行内的多个字符值?

r - 创建一个列,对从基于 R 中的另一列的列中提取的字符串文本进行分组

r - 2 条曲线之间的阴影区域

r - 旋转更宽返回 1 列?

python - 无法在 R 中导入 pandas

python - 如何在 Pandas 数据框中选择括号内的数据