在dplyr中使用列号 库(tidyverse,warn.conflications=TRUE) #>警告:程序包“tidyverse”是在R版本3.6.3下构建的 #>警告:包“ggplot2”是在R版本3.6.3下生成的 #>警告:程序包“tidyr”是在R版本3.6.3下构建的 #>警告:包“purrr”是在R版本3.6.3下生成的 #>警告:程序包“dplyr”是在R版本3.6.3下生成的 #>警告:程序包“stringr”是在R版本3.6.3下生成的 #>警告:“forcats”软件包是在R版本3.6.3下构建的 df%突变(跨越(c(x,a),~x/y)) #>#tibble:10 x 4 #>x y z a #> #> 1 0.0909 11 1 0.0885 #> 2 0.167 12 1 0.0464 #> 3 0.231 13 1 0.0586 #> 4 0.286 14 1 0.0590 #> 5 0.333 15 1 0.0111 #> 6 0.375 16 2 0.0595 #> 7 0.412 17 2 0.0320 #> 8 0.444 18 2 0.0311 #> 9 0.474 19 2 0.0386 #> 10 0.5 20 2 0.0236

在dplyr中使用列号 库(tidyverse,warn.conflications=TRUE) #>警告:程序包“tidyverse”是在R版本3.6.3下构建的 #>警告:包“ggplot2”是在R版本3.6.3下生成的 #>警告:程序包“tidyr”是在R版本3.6.3下构建的 #>警告:包“purrr”是在R版本3.6.3下生成的 #>警告:程序包“dplyr”是在R版本3.6.3下生成的 #>警告:程序包“stringr”是在R版本3.6.3下生成的 #>警告:“forcats”软件包是在R版本3.6.3下构建的 df%突变(跨越(c(x,a),~x/y)) #>#tibble:10 x 4 #>x y z a #> #> 1 0.0909 11 1 0.0885 #> 2 0.167 12 1 0.0464 #> 3 0.231 13 1 0.0586 #> 4 0.286 14 1 0.0590 #> 5 0.333 15 1 0.0111 #> 6 0.375 16 2 0.0595 #> 7 0.412 17 2 0.0320 #> 8 0.444 18 2 0.0311 #> 9 0.474 19 2 0.0386 #> 10 0.5 20 2 0.0236,r,dplyr,across,R,Dplyr,Across,由(v0.3.0)于2020-08-01创建 从上面的示例中,我想将列x和a按行除以y。建议的方法在此页上,但我必须在函数中使用列名作为参数。有没有办法,我可以用列号代替他们的名字?如果我能对Cross的所有实例使用该技巧,我将不胜感激。我们可以用列索引替换未引用的名称 library(dplyr) df %>% mutate(across(c(1, 4), ~ .x / y)) # A tibble: 10 x 4 # x y z

由(v0.3.0)于2020-08-01创建


从上面的示例中,我想将列x和a按行除以y。建议的方法在此页上,但我必须在函数中使用列名作为参数。有没有办法,我可以用列号代替他们的名字?如果我能对Cross的所有实例使用该技巧,我将不胜感激。

我们可以用列索引替换未引用的名称

library(dplyr)
df %>%
      mutate(across(c(1, 4), ~ .x / y))
# A tibble: 10 x 4
#        x     y     z        a
#    <dbl> <int> <int>    <dbl>
# 1 0.0909    11     1 0.0470  
# 2 0.167     12     1 0.000267
# 3 0.231     13     1 0.0453  
# 4 0.286     14     1 0.0327  
# 5 0.333     15     1 0.0382  
# 6 0.375     16     2 0.0453  
# 7 0.412     17     2 0.0105  
# 8 0.444     18     2 0.0329  
# 9 0.474     19     2 0.0396  
#10 0.5       20     2 0.0249  
库(dplyr)
df%>%
突变(跨越(c(1,4),~x/y))
#一个tibble:10x4
#x y z a
#          
# 1 0.0909    11     1 0.0470  
# 2 0.167     12     1 0.000267
# 3 0.231     13     1 0.0453  
# 4 0.286     14     1 0.0327  
# 5 0.333     15     1 0.0382  
# 6 0.375     16     2 0.0453  
# 7 0.412     17     2 0.0105  
# 8 0.444     18     2 0.0329  
# 9 0.474     19     2 0.0396  
#10 0.5       20     2 0.0249  

我们可以使用列名

df2 <- df %>% 
  rowwise() %>% 
  mutate(across(c(x,a), ~ .x/y))
df2
# A tibble: 10 x 4
# Rowwise: 
#   x     y     z         a
# <dbl> <int> <int>     <dbl>
# 1 0.0909    11     1 0.0889   
# 2 0.167     12     1 0.0751   
# 3 0.231     13     1 0.0634   
# 4 0.286     14     1 0.0626   
# 5 0.333     15     1 0.0122   
# 6 0.375     16     2 0.0147   
# 7 0.412     17     2 0.00868  
# 8 0.444     18     2 0.0000776
# 9 0.474     19     2 0.0349   
# 10 0.5      20     2 0.00526  
df2%
行()
突变(跨越(c(x,a),~x/y))
df2
#一个tibble:10x4
#顺时针:
#x y z a
#        
# 1 0.0909    11     1 0.0889   
# 2 0.167     12     1 0.0751   
# 3 0.231     13     1 0.0634   
# 4 0.286     14     1 0.0626   
# 5 0.333     15     1 0.0122   
# 6 0.375     16     2 0.0147   
# 7 0.412     17     2 0.00868  
# 8 0.444     18     2 0.0000776
# 9 0.474     19     2 0.0349   
# 10 0.5      20     2 0.00526