R报错 Error in as.data.frame.default(x[[i]], optional = TRUE)

在用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]",以保证程序能够正确地运行。