使用as.data.frame时如何保留列名

时间:2016-02-04 18:14:13

标签: r

我试图将列表转换为数据框,并更改列名称。 列表看起来像

ids

Name1      Name2
"CatValue" 6

当我运行as.data.frame(ids, optional = FALSE)时 它改为:

ids.Name1      ids.Name2
"CatValue"     6

但它应该保持不变。

如何避免这种情况?我认为可选的论证会有所帮助,但正如你所看到的那样,它并没有发生。

编辑: 我发现它不够清晰,所以我会试着向你展示大局。

我写了一个剪贴板,它将数据帧分配给id0001,id0002等值。我想在for循环中使用这些数据帧,所以我使用这样的代码来获取它们 table<-mget(ids0001) 并且typeof(table)是列表(不知道为什么)。我需要将其转换为data.frame(以使我的循环工作)。

问题是,分配给table的内容应该是表格不是列表(而是在我使用mget()之前。

我使用mget()之后的第一个data.frame,list和data.frame看起来像这样,问题是as.data.frame将ids0001.添加到列名。

 GAME_ID E VENTNUM EVENTMSGTYP EVENTMSGACTIONTYPE   PERIOD   WCTIMESTRING
1 0021500001 0       12            0                    1       8:12 PM
2 0021500001 1       10            0                    1       8:12 PM
3 0021500001 2        2           42                    1       8:13 PM
4 0021500001 3        4            0                    1       8:13 PM
5 0021500001 4        5           45                    1       8:13 PM
6 0021500001 5        1           80                    1       8:13 PM

编辑2: 现在我可以看到mget()创建一个如下所示的列表。太久了,我错过了

 id0001$
 GAME_ID E VENTNUM EVENTMSGTYP EVENTMSGACTIONTYPE   PERIOD   WCTIMESTRING
1 0021500001 0       12            0                    1       8:12 PM
2 0021500001 1       10            0                    1       8:12 PM
3 0021500001 2        2           42                    1       8:13 PM
4 0021500001 3        4            0                    1       8:13 PM
5 0021500001 4        5           45                    1       8:13 PM
6 0021500001 5        1           80                    1       8:13 PM

3 个答案:

答案 0 :(得分:2)

如果您可以分享您生成列表的方式,那将会很有帮助。我试图复制你的清单(或者说差不多)。要避免使用默认的deparsed参数命名,可以指定名称value = ids$ids

ids = list(ids = c(Name1 = "CatValue", Name2 = 6))
b <- data.frame(value = ids$ids)
t(b)

输出

      Name1      Name2
value "CatValue" "6"  

答案 1 :(得分:1)

akrun和rawr是对的。我使用ids[[1]]并解决了问题。感谢你们。

答案 2 :(得分:0)

我尝试了以下内容:

> listSample <- list(Name1 = "catValue", Name2 = 6)
> listSample
$Name1
[1] "catValue"

$Name2
[1] 6

> listAsDF <- as.data.frame(listSample)
> listAsDF
Name1 Name2
1 catValue     6

如果没有看到你如何构建你的列表,我不确定你为什么会有不同的东西。如果我没有像我那样创建列表并且只是更改为DF,则R会在“catValue”和6中添加前缀(即“X”),因此我的列名称将是X.catValue和X6。 / p>