Функция «read.table» дает только нечетные столбцы при объединении четных столбцов - PullRequest
0 голосов
/ 14 сентября 2018

Я пытаюсь прочитать файл TSV в R, используя функцию read.table.

myTable <- read.table("file_path", sep='\t', header=T)

Но когда я попробую команду

names(myTable)

Это дает мне имена столбцов, которые имеют нечетные номера, при этом объединяя четные столбцы с ними.

[1] "GeneSymbol"    "GSM480304_JK_C_05.07.mas5.chp"
[3] "GSM480355_JK_C_05.07.mas5.chp"    "GSM480480_JK_C_05.07.mas5.chp"
[5] "GSM480555_JK_C_05.07.mas5.chp"    "GSM480634_JK_C_05.07.mas5.chp"

Это точные имена столбцов, и вы можете видеть, что два имени столбца разделены пробелом, а в списке указаны только пронумерованные имена столбцов ODD.

Вывод должен быть таким:

[1] "GeneSymbol"
[2] "GSM480304_JK_C_05.07.mas5.chp"
[3] "GSM480355_JK_C_05.07.mas5.chp"
[4] "GSM480480_JK_C_05.07.mas5.chp"
[5] "GSM480555_JK_C_05.07.mas5.chp"
[6] "GSM480634_JK_C_05.07.mas5.chp"

Это создает проблему при назначении имен другой таблице, где я хочу использовать эти имена столбцов. Есть предложения?

1 Ответ

0 голосов
/ 14 сентября 2018

Как отмечено в комментариях, R отображает все столбцы, но не в том формате, который вы ожидаете. Это можно форсировать, приведя результат names() к as.data.frame() следующим образом:

rawData <- "
Number,Name,Type1,Type2,Total,HP,Attack,Defense,SpecialAtk,SpecialDef,Speed,Generation,Legendary
1,Bulbasaur,Grass,Poison,318,45,49,49,65,65,45,1,False
2,Ivysaur,Grass,Poison,405,60,62,63,80,80,60,1,False
3,Venusaur,Grass,Poison,525,80,82,83,100,100,80,1,False
3,VenusaurMega Venusaur,Grass,Poison,625,80,100,123,122,120,80,1,False
4,Charmander,Fire,,309,39,52,43,60,50,65,1,False
5,Charmeleon,Fire,,405,58,64,58,80,65,80,1,False
6,Charizard,Fire,Flying,534,78,84,78,109,85,100,1,False
6,CharizardMega Charizard X,Fire,Dragon,634,78,130,111,130,85,100,1,False
6,CharizardMega Charizard Y,Fire,Flying,634,78,104,78,159,115,100,1,False
7,Squirtle,Water,,314,44,48,65,50,64,43,1,False
8,Wartortle,Water,,405,59,63,80,65,80,58,1,False
9,Blastoise,Water,,530,79,83,100,85,105,78,1,False"

gen01 <- read.csv(textConnection=rawData,header=TRUE)

as.data.frame(names(gen01))

... и вывод:

> as.data.frame(names(gen01))
   names(gen01)
1        Number
2          Name
3         Type1
4         Type2
5         Total
6            HP
7        Attack
8       Defense
9    SpecialAtk
10   SpecialDef
11        Speed
12   Generation
13    Legendary
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...