首页 > 解决方案 > 如何在tidyverse中使用索引减去两个列

问题描述

我有一个数据框

df <- tibble(row1= c(1,2,3,4,5),
            row2=c(2,3,4,5,6))

如何使用索引(而不是行名)减去两个列?我希望这个工作

df %>% mutate(diff= select(1)-select(2))

但是宇宙不在我这边……

标签: r

解决方案


需要一个数据select参数Usage

选择(。数据,...)

此外,由于select返回 data.frame/tibble 作为输出,我们可以使用[[

library(dplyr)
df %>% 
     mutate(diff = select(., 1)[[1]] - select(., 2)[[1]])

-输出

# A tibble: 5 x 3
#   row1  row2  diff
#  <dbl> <dbl> <dbl>
#1     1     2    -1
#2     2     3    -1
#3     3     4    -1
#4     4     5    -1
#5     5     6    -1

或者改为使用pull返回vector

df %>%
   mutate(diff = pull(., 1) - pull(., 2))

推荐阅读