首页 > 解决方案 > R数据框中的列名可以为空吗?

问题描述

我正在使用以下代码在 R 中创建一个数据框

library(kableExtra)
library(tidyverse)

d <- c('GDP Response to Positive','','CPI Response to Positive','')
s <- c('AS Shock','AD Shock','AS Shock','AD Shock')
sr <- c('+','+','-','+')
lr <- c('+','Neutral','-','+')

data.frame(d,s,sr,lr) %>% 
  rename(``=d)

但是,当我尝试rename在代码中运行该行时,出现以下错误

Error: attempt to use zero-length variable name

我假设这意味着数据框中的列名不能为空。想知道是否有任何解决方法?我希望列名为空,因为我正在使用此数据框创建一个表,kableExtra并且我希望表中的列名为空

标签: rtidyverse

解决方案


如果我们想将列 'd' 重新分配给"",请将""

library(dplyr)
data.frame(d, s, sr, lr) %>%
       rename(`''` = d)

这些是非标准列名,因此每次都会通过反引号引用


OP 代码中的错误并非特定于rename. 它可以像在控制台上打印反引号一样复制

``

错误:尝试使用零长度变量名

根据?colnames

对于数据框,rownames 的值应该是非重复和非缺失名称的字符向量(这是强制的),而 colnames 的值应该是(最好)唯一的语法有效名称的字符向量。在这两种情况下,值都将被 as.character 强制转换,设置 colnames 会将行名转换为字符。


推荐阅读