R 如何删除数据帧中的标题?

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

我想从我拥有的数据帧中删除标题。我从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)
更改标题或列名称的名称。如果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)] <- ""