R 将文件名写入列标题

R 将文件名写入列标题,r,R,我有一个循环,它查看一组文件,取第4列并将它们组合在一起。我想将“Output”文件夹后面的文件名附加为列的标题 files2 <- list.files(path="c:/Users/~/Output",pattern="*.csv", full.names=TRUE, recursive=FALSE) newdata <- (1:51) for(ii in files2){ titlename2<- tools::file_path_sans_ext(basename

我有一个循环,它查看一组文件,取第4列并将它们组合在一起。我想将“Output”文件夹后面的文件名附加为列的标题

files2 <- list.files(path="c:/Users/~/Output",pattern="*.csv", full.names=TRUE, recursive=FALSE)

newdata <- (1:51)

for(ii in files2){

titlename2<- tools::file_path_sans_ext(basename(files2)) 
#genes <- read.csv(files2[1], header=True)[,1]     # gene names
mydata2 <-read.csv(ii, header = T, stringsAsFactors=FALSE)
mydata2<- mydata2[,4]


newdata <- cbind(newdata,mydata2)
colnames(newdata)= c(files2)

}

files2问题源于
colnames(newdata)
c(files2)
的长度不同


例如,您可以将
colnames(newdata)=c(files2)
移动到for循环之后,并将
c(files2)
替换为
c(“ID”,files2)
(正如您有
length(files2)+1
列一样)。

在绑定之前,尝试将新名称分配给单列data.frame,
mydata2
。现在,您正试图为“不断增长”的数据集
newdata
分配一个名称,这导致了错误,因为您没有足够的名称来容纳所有列。我尝试了
colnames(mydata2)=titlename2
,但在
colnames中得到了错误
错误哦,我明白了,您正在提取一个向量(我以为您正在提取一个data.frame)。如果您提取一个data.frame(
mydata2[,4,drop=FALSE]
)然后,您可以将名称分配给列而不是向量。您可以添加解决方案吗?我有类似的问题,但上面的代码不起作用。出于某种原因,我不得不分两行执行此操作,但它起作用了。
sumhead=c(“WS”,titlename2)colnames(newdata)=sumhead
Error in dimnames(x) <- dn : 
  ``length of 'dimnames' [2] not equal to array extent