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