Есть ли способ в R, через который первый столбец может быть сделан в качестве заголовка - PullRequest
1 голос
/ 09 апреля 2019

Я хочу сделать первый столбец данных таблицы в виде заголовка в R.

X            sub1 sub2 sub3........
carnitine     0    1    1
betaine       0    0    0
acetate       1    1    1
iodine        0    1    0
fluconazole   0    0    1
.
.
.

Эта функция используется для чтения текстового файла.

InitFeatures<-function(namefeatures){
  p0<-paste0("./", namefeatures)
  features <- as.matrix(utils::read.delim(p0, sep="\t"))
  return(features)
}

Поэтому, когда я запускаю команду features<-InitFeatures("abc.txt"), создается только заголовок строки. Я хочу, чтобы столбец X также был сделан в качестве заголовка.

1 Ответ

1 голос
/ 09 апреля 2019

Один из вариантов может быть:

Чтобы получить первый столбец в качестве заголовка

Обратите внимание, что если вы хотите, чтобы ваш первый столбец был заголовком, длина столбцов и строк должна быть одинаковой.В противном случае у вас будет больше имен, чем столбцов, и наоборот.

#Get names
names(df) <- df[,1]
#Remove first column
df <- df[,-1]

#Sample data
df <- read.table(text = "X            sub1 sub2 sub3
carnitine     0    1    1
betaine       0    0    0
acetate       1    1    1", stringsAsFactors = FALSE)

Первый столбец в качестве заголовка, если длина столбца и строка не совпадают

#Repeat names according to the number of columns 
names(df) <- rep(df[,1], dim(df)[2])[1:dim(df)[2]]

#Sample data
require(tidyverse)
df <- data.frame(matrix(nrow = 3, ncol = 10)) %>% 
  mutate(X1 = letters[1:3])

Чтобы получитьпервая строка в качестве заголовка

#Get names from first row
names(df) <- paste(df[1,])
#delete first row
df <- df[-1,]

Результат:

             X sub1 sub2 sub3
2   carnitine    0    1    1
3     betaine    0    0    0
4     acetate    1    1    1
5      iodine    0    1    0
6 fluconazole    0    0    1

Пример данных:

df <- read.table(text = "X            sub1 sub2 sub3
carnitine     0    1    1
betaine       0    0    0
acetate       1    1    1
iodine        0    1    0
fluconazole   0    0    1", stringsAsFactors = FALSE)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...