Как правило, вопросам Bioconductor будет уделено гораздо больше внимания на сайте поддержки Bioconductor ссылка здесь . Тем не менее, я могу попытаться дать несколько советов. Ошибка, которую вы получаете, заключается в том, что ваша coldata - это список, а не объект DataFrame.
coldata <- lapply(coldata, as.factor)
создает список для каждого столбца. Есть также несколько других проблем, которые я рассмотрел в коде ниже. Наиболее важно, что NGSnum должен быть целочисленной матрицей. Многие матрицы подсчета RNAseq на самом деле являются числами с плавающей запятой (или удваиваются в R), но это происходит из-за алгоритма, присваивающего вероятности для прочтений, которые могли быть получены из нескольких генов. То, что я сделал, это округлил значения, чтобы превратить их в целые числа.
library(DESeq2)
NGS <- read.csv2("Countdata10.csv", header = TRUE, stringsAsFactors = FALSE)
Sinfo <- read.csv2(paste0("Sampleinfo.csv"), header = TRUE, stringsAsFactors = FALSE)
coldata <- DataFrame(apply(X = Sinfo, MARGIN = 2, FUN = as.factor)) # use apply instead of apply
NGSnum <- apply(X = NGS[,-1], MARGIN = 2, FUN = as.numeric)
NGSnum <- apply(X = NGSnum, MARGIN = 2, FUN = round)
rownames(NGSnum) <- NGS$Transcript
NGSFull <- DESeqDataSetFromMatrix(
countData = NGSnum,
colData = coldata,
design = ~ Genotype + Treatment)
NGSFull$Genotype <- relevel(NGSFull$Genotype, "WT")
deseqNGS <- DESeq(NGSFull)
res <- results(deseqNGS)
res