R中有什么方法可以将第一列用作标题

时间:2019-04-09 05:12:27

标签: 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列也应作为标题。

1 个答案:

答案 0 :(得分:1)

一个选项可以是:

获取第一列作为标题

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

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