首页 > 解决方案 > R中是否有任何方法可以将第一列作为标题

问题描述

我想将表数据的第一列作为 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 也应该作为标题。

标签: r

解决方案


一种选择可以是:

将第一列作为标题

请注意,如果要将第一列作为标题,则列和行的长度必须相同。否则,您将拥有比列更多的名称,反之亦然。

#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)

推荐阅读