我有這個資料框:
vehicles <- tibble(vehicle = c("Car", "Car", "Motorbike"),
color = c("Red", "Black", "Blue"),
speed = c("Low", "High", "High"))
| 車輛 | 顏色 | 速度 |
|---|---|---|
| 車 | 紅色的 | 低的 |
| 車 | 黑色的 | 高的 |
| 摩托車 | 藍色的 | 高的 |
我想創建一個新列來粘貼我根據向量選擇的列的分類值。
例如,如果我想根據車輛和顏色創建一個分類列,我會這樣做:
vehicles %>% mutate(category = paste(vehicle, color, sep = "_"))
這會給我:
| 車輛 | 顏色 | 速度 | 類別 |
|---|---|---|---|
| 車 | 紅色的 | 低的 | 車_紅 |
| 車 | 黑色的 | 高的 | 汽車_黑色 |
| 摩托車 | 藍色的 | 高的 | 摩托車_藍色 |
但是,我想將此代碼嵌入到一個函式中,以便粘貼的列由用戶提供的字符向量確定。
例如,用戶選擇choices = c("vehicle", "color", "speed")。但是 dplyr 的整潔評估不允許我這樣做vehicles %>% mutate(category = paste(choices, sep = "_")),因為這只會創建一個充滿“vehicle_color_speed”值的列向量。然后我將如何創建與以下結果相同的東西:
vehicles %>% mutate(category = paste(vehicle, color, speed, sep = "_"))
但使用選擇向量。
uj5u.com熱心網友回復:
與rlang::syms:
library(dplyr)
choices = c("vehicle", "color", "speed")
vehicles %>%
mutate(category = paste(!!!rlang::syms(choices), sep = "_"))
輸出
# A tibble: 3 × 4
vehicle color speed category
<chr> <chr> <chr> <chr>
1 Car Red Low Car_Red_Low
2 Car Black High Car_Black_High
3 Motorbike Blue High Motorbike_Blue_High
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/529433.html
上一篇:運行省略類別的回歸
下一篇:將列除以參考行
