在用Rstudio运行相关代码时报错
Error in as.data.frame.default(x[[i]], optional = TRUE) :
cannot coerce class ‘"function"’ to a data.frame
运行相关代码为
for (i in 1:1217){
path = paste0("gdc_download_20230506_094424.277085//",count_file[i]) #Counts文件夹名
data<- read.delim(path,fill = TRUE,header = FALSE,row.names = 1)
colnames(data)<-data[2,]
data <-data[-c(1:6),]
data <- data[3] #数据类型,选择其中之一 3:unstranded;4:stranded_first;5:stranded_second;6:tpm_unstranded;7:fpkm_unstranded;8:fpkm_uq_unstranded
colnames(data) <- file_sample$sample_id[which(file_sample$file_name==count_file_name[i])]
matrix <- cbind(matrix,data)
}
求帮忙改正
针对你的问题结合chatgpt知识库请参考以下内容:
根据错误提示,是因为在运行过程中将一个"function"类的对象转换成了数据框类型,所以会出现该错误。根据你提供的代码,可能是因为 data 的定义之后被修改了类型,导致后续处理出错。
在这里,data 是用来读入文件的数据框,但是在代码中将其赋值为了 data[3],即数据类型中的一个数值。从而导致 data 变成了一个函数,导致报错。
建议检查一下代码中对于 data 的处理过程,确认 data 中始终存放着正确的数据框类型,避免进行错误的类型转换。
根据你提供的代码,建议将以下语句:
data <- data[3]
修改为:
data <- data[, 3] # 将第三列提取出来
这样可以避免将 data 的类型改变为函数。修改后的完整代码如下:
for (i in 1:1217) {
path <- paste0("gdc_download_20230506_094424.277085//", count_file[i]) #Counts文件夹名
data <- read.delim(path, fill = TRUE, header = FALSE, row.names = 1)
colnames(data) <- data[2, ]
data <- data[-c(1:6), ]
data <- data[, 3] # 提取第三列数据
colnames(data) <- file_sample$sample_id[which(file_sample$file_name == count_file_name[i])]
matrix <- cbind(matrix, data)
}
注意,我们还将路径名的赋值从 "count_file_name[i]" 修改为了 "count_file[i]",以保证程序能够正确地运行。