在R的'as.data.frame'函数中,'col.names'是用来指定数据框中列名的参数。

25

我在R中使用as.data.frame()函数将表格转换为数据框,并希望使用该函数设置列名。

我发现as.data.frame()有一个可选参数col.names。文档说它是一个字符向量,包含列名。但无论我在col.names中输入什么,结果都没有改变。

x = c('a','b','c','a')
x_table = table(x)
x_df = as.data.frame(x_table, col.names = c('name', 'freq'))

输出结果为:

    x Freq
1   a    2
2   b    1
3   c    1

我知道可以使用colnames(df)来在数据框创建后更改列名,但我很想知道为什么这里不能用col.names

谢谢。


5
ZHI LIU,您好!能否给我们提供一段代码示例,以便更好地理解为什么您的结果与预期不符?谢谢! - Justin
6
由于您拥有一个table类对象,所以调用的方法是as.data.frame.table,该方法不具有col.names参数。 - Henrik
嗨,贾斯汀,我添加了一个示例。我在想我是否使用了错误的词来描述函数 table() 的输出类型。那是一个“表格”吗? - Vincent
谢谢你,Henrik!我明白了。 - Vincent
@Henrik 根据 R 文档,as.data.frame 函数确实有一个 "col.names" 参数。 - ladytoky0
2个回答

6
如果你想在创建数据框后避免分配列名,可以利用table函数中的dnn参数来指定“name”列,并使用as.data.frame函数中的responseName参数来指定“freq”列。
x <- c('a','b','c','a')
x_df <- as.data.frame(table(x, dnn = list("name")), responseName = "freq")

12
col.names参数为什么不能正常工作? - Sky Scraper

4
我认为正如@Henrik指出的那样,这是一个类错误。使用这段代码,我可以得到正确的名称,但会产生错误。
x=c('a','b','c','a')
x_table=table(x)
x_df=as.data.frame(x_table,colnames(x_df)<-c("name","freq"))

>x_df
  name freq
1    a    2
2    b    1
3    c    1

数据框中出现错误:在执行“expand.grid”时,提供的维度名称长度不正确。

如果我设置:

row.names=NULL 

在同一行代码中,未命名的Df再次返回,但没有错误。
最好的猜测是格式/类错误。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接