/ / Как да запазите имена на колони при използване на as.data.frame - r

Как да запазите имената на колоните, когато използвате

Опитвам се да преобразувам списък в кадър с данни и да променя имената на колоните. Списъкът изглежда

ids

Name1      Name2
"CatValue" 6

когато бягам as.data.frame(ids, optional = FALSE) тя се променя на:

ids.Name1      ids.Name2
"CatValue"     6

Но трябва да остане същото.

Как да избегнете това? Мислех, че този незадължителен аргумент ще помогне, но както можете да видите, това не се случи.

РЕДАКТИРАНЕ: Виждам, че не е достатъчно ясно, затова ще се опитам да ви покажа голяма картина.

Аз написах scrapper, който възлага данни рамка на стойност като id0001, id0002 и т.н. Искам да използвам тези данни рамки в за-цикъл, така че използвам код като това, за да стигнем до тях table<-mget(ids0001) и typeof(table) е списък (няма представа защо). Трябва да го трансформирам в data.frame (за да направя ми цикъл работа).

Проблемът е, на кого е възложено table трябва да бъде таблица не е списък (и това е преди да използвам mget(),

и двата ми първи data.frame, списък и data.frame след като използвате mget () изглеждат така, проблемът е as.data.frame adds 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

EDIT 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 за отговор № 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"

1 за отговор № 2

akrun и rawr са прави. използвах ids[[1]] и реши проблема. Благодаря ви момчета.


0 за отговор № 3

Опитах следното:

> 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 би добавил префикс (т.е. "X") към "catValue" и 6, така че имената на колоните ми ще бъдат X.catValue и X6.