我试图将列表转换为数据框,并更改列名称。 列表看起来像
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
答案 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>