R 如何删除数据帧中的标题?
我想从我拥有的数据帧中删除标题。我从csv文件中读取数据,然后转置它,但它创建了一个新的标题,即文件名和文件中数据所在的行 以下是数据帧df的示例:R 如何删除数据帧中的标题?,r,header,dataframe,R,Header,Dataframe,我想从我拥有的数据帧中删除标题。我从csv文件中读取数据,然后转置它,但它创建了一个新的标题,即文件名和文件中数据所在的行 以下是数据帧df的示例: a.csv.1 a.csv.2 a.csv.3 ... x 5 6 1 ... y 2 3 2 ... 我想删除a.csv.n行,但是当我尝试df时,您可以使用names(df)更改标题或列名称的名称。如果newn
a.csv.1 a.csv.2 a.csv.3 ...
x 5 6 1 ...
y 2 3 2 ...
我想删除a.csv.n行,但是当我尝试df时,您可以使用names(df)
更改标题或列名称的名称。如果newnames是名称列表,如newname将名称设置为空
names(df) <- NULL
names(df)如果您真的、真的、真的不喜欢列名,您可以将数据帧转换为矩阵(记住可能强制使用不同类的变量),然后删除dimnames
dd <- data.frame(x1 = 1:5, x2 = 11:15)
mm1 <- as.matrix(dd)
mm2 <- matrix(mm1, ncol = ncol(dd), dimnames = NULL)
dd您可以使用
setNames(dat, rep(" ", length(dat)))
其中,dat
是数据帧的名称。然后,所有列都将有名称”
,因此将是“不可见的”。如前所述,在数据帧中不使用列名是不会发生的事情,但我猜您不会太在意它们是否在那里,您只是不想在打印数据帧时看到它们?如果是这样,您可以编写一个新的打印函数来解决这个问题,如下所示:
> dat <- data.frame(var1=c("A","B","C"),var2=rnorm(3),var3=rnorm(3))
> print(dat)
var1 var2 var3
1 A 1.2771777 -0.5726623
2 B -1.5000047 1.3249348
3 C 0.1989117 -1.4016253
> ncol.print <- function(dat) print(matrix(as.matrix(dat),ncol=ncol(dat),dimnames=NULL),quote=F)
> ncol.print(dat)
[,1] [,2] [,3]
[1,] A 1.2771777 -0.5726623
[2,] B -1.5000047 1.3249348
[3,] C 0.1989117 -1.4016253
>数据打印(dat)
var1 var2 var3
1 A 1.2771777-0.5726623
2 B-1.5000047 1.3249348
3 C 0.1989117-1.4016253
>非编码打印非编码打印(dat)
[,1] [,2] [,3]
[1,]A 1.2771777-0.5726623
[2,]B-1.5000047 1.3249348
[3,]c0.1989117-1.4016253
另一个选项是将变量名设置为唯一的空白量,例如:
> names(dat) <- c(" ", " ", " ")
> dat
1 A 1.2771777 -0.5726623
2 B -1.5000047 1.3249348
3 C 0.1989117 -1.4016253
>名称(dat)dat
1 A 1.2771777-0.5726623
2 B-1.5000047 1.3249348
3 C 0.1989117-1.4016253
您还可以编写一个函数来执行以下操作:
> blank.names <- function(dat){
+ for(i in 1:ncol(dat)){
+ names(dat)[i] <- paste(rep(" ",i),collapse="")
+ }
+ return(dat)
+ }
> dat <- data.frame(var1=c("A","B","C"),var2=rnorm(3),var3=rnorm(3))
> dat
var1 var2 var3
1 A -1.01230289 1.2740237
2 B -0.13855777 0.4689117
3 C -0.09703034 -0.4321877
> blank.names(dat)
1 A -1.01230289 1.2740237
2 B -0.13855777 0.4689117
3 C -0.09703034 -0.4321877
>blank.names blank.names(dat)
1A-1.01230289 1.2740237
2b-0.13855777 0.4689117
3 C-0.09703034-0.4321877
但一般来说,我不认为应该这样做。我在一个R脚本中使用的函数:
read_matrix <- function (csvfile) {
a <- read.csv(csvfile, header=FALSE)
matrix(as.matrix(a), ncol=ncol(a), dimnames=NULL)
}
read_matrix它有几年的延迟,但您可以简单地使用向量重命名de列:
## if you want to delete all column names:
colnames(df)[] <- ""
## if you want to delete let's say column 1:
colnames(df)[1] <- ""
## if you want to delete 1 to 3 and 7:
colnames(df)[c(1:3,7)] <- ""
##如果要删除所有列名:
colnames(df)[]如何将其更改为nothing??data.frame
:“列名应为非空,尝试使用空名称将产生不受支持的结果。”。这将在colnames中给出NA
。您的回答为我提供了一个类似的优秀想法。我有一个带名称的data.frame,我想用.txt写,但不带名称:)问题仍然是,如果要处理data.frame,为什么要删除该标题。@我想,这不是问题。在看到Sven的答案后,我发现第二种方法需要唯一的空格是错误的,不确定为什么names(dat)准确地说,您想要dat
iops_even <- read_matrix('even_iops_Jan15.csv')
iops_odd <- read_matrix('odd_iops_Jan15.csv')
## if you want to delete all column names:
colnames(df)[] <- ""
## if you want to delete let's say column 1:
colnames(df)[1] <- ""
## if you want to delete 1 to 3 and 7:
colnames(df)[c(1:3,7)] <- ""