2016-02-04 32 views
1

我试图将列表转换为数据框,并更改列名称。 列表看起来像如何在使用as.data.frame时保留列名称

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,列表和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 
+2

尝试通过设置列表的名称为NULL或使用'[[''[['' – akrun

+1

你应该给更多的信息。你在命名列表中只有一个数据框吗?那么'ids [[1]]'应该可以工作。如果列表中有多个数据框,您正在做的是将它们绑定在一起,但也许您希望它们实际上是您的解决方案工作的 – rawr

+0

。谢谢 – AlienDeg

回答

1

如果你可以分享你如何生成列表,这将是有益的。我试图复制你的列表(或者更接近)。要避免默认的解析参数命名,您可以指定一个名称value = ids$ids

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

输出

 Name1  Name2 
value "CatValue" "6" 
+0

我已添加此信息 – AlienDeg

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。

+0

@rawr我添加了一些附加信息。对不起,不清楚 – AlienDeg

1

akrun和rawr是正确的。我用ids[[1]]它解决了问题。感谢你们。