在R中使用mutate基于变量值创建tibble列的方法
在R中用变量取值作为列名给tibble添加新列的最简方法
要实现用变量的取值作为新列名,只需使用dplyr的**:=运算符结合!!解引用符**,这是最简洁的实现方式:
var_name='hello' iris_tbl = as_tibble(iris) iris_tbl <- iris_tbl %>% mutate(!!var_name := 1) print(iris_tbl)
运行后会得到预期结果,新列的名称是hello而非var_name:
# A tibble: 150 × 6 Sepal.Length Sepal.Width Petal.Length Petal.Width Species hello <dbl> <dbl> <dbl> <dbl> <fct> <dbl> 1 5.1 3.5 1.4 0.2 setosa 1 2 4.9 3 1.4 0.2 setosa 1 3 4.7 3.2 1.3 0.2 setosa 1 # … with 147 more rows
原理说明
:=是dplyr专门设计的赋值运算符,支持在左侧使用动态表达式生成列名,而普通的=只能识别固定的列名字符。!!(bang-bang运算符)的作用是解引用变量:它会把var_name中存储的实际字符串值(这里是"hello")提取出来,作为新列的名称。
内容的提问来源于stack exchange,提问作者Daniel
相关产品推荐
相关产品推荐

