我可以使用变量来表示 中的列名称dplyr mutate,只要它位于计算部分的右侧即可。这工作正常:
library(dplyr)
var <- "mass"
x <- starwars %>%
mutate(height = height * 2,
mass = get(var) * 2)
Run Code Online (Sandbox Code Playgroud)
但是,如果我尝试使用变量来表示新的列名称(即在左侧),则会抛出错误。例如,这会导致错误:
var <- "mass"
x <- starwars %>%
mutate(height = height * 2,
get(var) = get(var) * 2)
Run Code Online (Sandbox Code Playgroud)
如何在 中使用变量作为列名mutate?
使用:=带有!!- 的运算符代替get,我们可以使用代词[[进行提取.data(或转换为symbol 并求值 (!! )
library(dplyr)\nstarwars %>%\n mutate(height = height * 2,\n !! var := .data[[var]] * 2)\n #or convert to symbol and evaluate\n # !! var := !! rlang::sym(var) * 2)\n #or use `{{}}`\n # {{var}} := !! rlang::sym(var) * 2)\nRun Code Online (Sandbox Code Playgroud)\n-输出
\n# A tibble: 87 \xc3\x97 14\n name height mass hair_color skin_color eye_color birth_year sex gender homeworld species films vehicles starships\n <chr> <dbl> <dbl> <chr> <chr> <chr> <dbl> <chr> <chr> <chr> <chr> <list> <list> <list> \n 1 Luke Skywalker 344 154 blond fair blue 19 male masculine Tatooine Human <chr [5]> <chr [2]> <chr [2]>\n 2 C-3PO 334 150 <NA> gold yellow 112 none masculine Tatooine Droid <chr [6]> <chr [0]> <chr [0]>\n 3 R2-D2 192 64 <NA> white, blue red 33 none masculine Naboo Droid <chr [7]> <chr [0]> <chr [0]>\n 4 Darth Vader 404 272 none white yellow 41.9 male masculine Tatooine Human <chr [4]> <chr [0]> <chr [1]>\n 5 Leia Organa 300 98 brown light brown 19 female feminine Alderaan Human <chr [5]> <chr [1]> <chr [0]>\n 6 Owen Lars 356 240 brown, grey light blue 52 male masculine Tatooine Human <chr [3]> <chr [0]> <chr [0]>\n 7 Beru Whitesun lars 330 150 brown light blue 47 female feminine Tatooine Human <chr [3]> <chr [0]> <chr [0]>\n 8 R5-D4 194 64 <NA> white, red red NA none masculine Tatooine Droid <chr [1]> <chr [0]> <chr [0]>\n 9 Biggs Darklighter 366 168 black light brown 24 male masculine Tatooine Human <chr [1]> <chr [0]> <chr [1]>\n10 Obi-Wan Kenobi 364 154 auburn, white fair blue-gray 57 male masculine Stewjon Human <chr [6]> <chr [1]> <chr [5]>\n# \xe2\x80\xa6 with 77 more rows\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
772 次 |
| 最近记录: |