在R语言中如何根据对象值动态设置列名创建dataframe?
如何在创建dataframe时直接用变量指定列名?
你想要通过变量值直接指定dataframe的列名,避免先创建再重命名的步骤,这里有几种可行的方法:
方法1:使用base R的setNames
base R的data.frame不支持:=语法,但可以通过setNames给列表设置名称后传入:
x = "conditional_colname" df <- data.frame(setNames(list(c(1, 2, 3)), x)) df > conditional_colname 1 1 2 2 3 3
方法2:使用tidyverse的tibble
tibble(tidyverse的核心数据框结构)支持:=运算符和tidy eval语法,直接就能实现需求:
library(tibble) x = "conditional_colname" df <- tibble({{x}} := c(1, 2, 3)) df > # A tibble: 3 × 1 > conditional_colname > <dbl> > 1 1 > 2 2 > 3 3
方法3:base R直接赋值
先创建空dataframe,再通过索引赋值指定列名:
x = "conditional_colname" df <- data.frame() df[[x]] <- c(1, 2, 3) df > conditional_colname 1 1 2 2 3 3
为什么你之前的尝试报错?
base R的data.frame函数不支持:=这个运算符,:=是tidyverse系列函数(如dplyr、tibble)特有的语法,所以直接在data.frame()里用{{x}} := ...会提示找不到:=函数。
内容的提问来源于stack exchange,提问作者Alberto Agudo Dominguez
相关产品推荐
相关产品推荐

