Не удалось создать матрицу в R - PullRequest
1 голос
/ 13 марта 2020

Я читаю файл tsv, используя:

> dt <- read.table("gene.tsv", fill=TRUE, header=TRUE, quote="", sep="\t")

, а затем проверяю свои данные, используя >head(dt), и получаю это:

 Gene Healthy_A Healthy_B Infected_A Infected_B
1  zwf        79        57         99        100
2 yyaP        99        99         99         99
3 xylB        74        45         78         99
4  hup        77        61         86         99
5  pgi        67        41         66         99
6  lon        98        76         99         99

Я устанавливаю имена строк, используя:

> rownames(dt) <- dt$gene

, а затем сделать матрицу из моих данных, используя:

> dt_matrix <- as.matrix(dt[2:5])

, но когда я проверил матрицу, используя head(dt_matrix), мои данные выглядят так:

Healthy_A Healthy_B Infected_A Infected_B
[1,]        79        57         99        100
[2,]        99        99         99         99
[3,]        74        45         78         99
[4,]        77        61         86         99
[5,]        67        41         66         99
[6,]        98        76         99         99

Я хочу, чтобы моя матрица выглядела так, как показано ниже:

 Gene       Healthy_A Healthy_B Infected_A Infected_B
  zwf        "79"        "57"         "99"        "100"
 yyaP        "99"        "99"         "99"         "99"
 xylB        "74"        "45"         "78"         "99"
  hup        "77"        "61"         "86"         "99"
  pgi        "67"        "41"         "66"         "99"
  lon        "98"        "76"         "99"         "99"

Как я могу получить то, что хочу?

Ответы [ 2 ]

1 голос
/ 13 марта 2020

Вы могли бы сделать это за один шаг.

m <- `rownames<-`(as.matrix(dt[-1]), dt[,1])
m
#      Healthy_A Healthy_B Infected_A Infected_B
# zwf         79        57         99        100
# yyaP        99        99         99         99
# xylB        74        45         78         99
# hup         77        61         86         99
# pgi         67        41         66         99
# lon         98        76         99         99
1 голос
/ 13 марта 2020

Установить имена строк после создания матрицы следующим образом:

dt <- fread(' Gene Healthy_A Healthy_B Infected_A Infected_B
  zwf        79        57         99        100
 yyaP        99        99         99         99
 xylB        74        45         78         99
  hup        77        61         86         99
  pgi        67        41         66         99
  lon        98        76         99         99')

dt_rownames <- dt$Gene

dt_matrix <- as.matrix(dt[,-1])
rownames(dt_matrix) <- dt_rownames
head(dt_matrix)

     Healthy_A Healthy_B Infected_A Infected_B
zwf         79        57         99        100
yyaP        99        99         99         99
xylB        74        45         78         99
hup         77        61         86         99
pgi         67        41         66         99
lon         98        76         99         99
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...