我尝试了丹尼尔·斯旺的一个教程,它运行得非常好。但是,我在topTable函数limma package中遇到了一个问题。
"topTable“函数创建一个"probeset”,但是这个probset列表没有"ID"头(其他列名是它们的示例名称,但是探测列表列没有名称(ID))。
结果,当我在跑步时:
gene.symbols <- getSYMBOL(probeset.list$ID, "hgu133plus2")我得到了以下错误
Error in .select(x, keys, columns, keytype = extraArgs[["kt"]], jointype = jointype):
'keys' must be a character vectortopTable是:
logFC AveExpr t P.Value adj.P.Val B
204779_s_at 7.367790 4.171707 72.77347 3.284937e-15 8.969850e-11 20.25762
207016_s_at 6.936667 4.027733 57.39252 3.694641e-14 5.044293e-10 19.44987
209631_s_at 5.192949 4.003992 51.24892 1.170273e-13 1.065182e-09 18.96660我的表达式集由simpleaffy (gcrma)包实现。我在windows 7下运行R3.0.2和最新的生物导体包、simpleaffy_2.38.0、limma_3.18.13和指定文件: hgu133plus2.db_2.10.1、hgu133plus2probe_2.13.0、hgu133plus2cdf_2.13.0
如果有人能帮我,我会非常感激的。
发布于 2014-04-09 18:34:15
ID不是作为ID列存储的,而是作为表的行名存储的。将行更改为:
gene.symbols <- getSYMBOL(rownames(probeset.list), "hgu133plus2")如果您希望有一个ID列而不是使用行名,您可以用以下方式分配一个:
probeset.list$ID = rownames(probeset.list)根据toptable函数的文档,ID列将存在的当且仅当有重复的基因名称:
如果“fit”有唯一的行名,那么上述row.names的data.frame按排序顺序是相同的。否则,row.names的data.frame以“fit”表示行号。如果“fit”有重复的行名,那么这些名称将保留在data.frame的“ID”列中,或者如果“genelist”已经包含“ID”列,则保留在“ID0”中。
在其他使用ID的例子中,输入中肯定有重复的基因名。这是有意义的,因为R通常不喜欢有重复的行名(但是在列中有重复的in没有问题)。
发布于 2015-02-09 11:37:58
希望我的工作代码能把你的问题说清楚:
library(limma) # загружаем нужную библиотека
library(siggenes)
library(cluster)
library(stats)
data <- read.table("AneurismDataAllProbesGenesisLog2NormalizedExperAndGenes.tab", sep = "\t", header = TRUE) # read from file
q = as.matrix(data) # данные в матрицу
b = as.matrix(cbind(data[, 2:10], data[, 11:14])) # cмежные колонки данных
m = normalizeQuantiles(b, ties=TRUE)
f = data.frame(condition = c(0,0,0,0,0,0,0,0,0,1,1,1,1)) # дизайн
fit = lmFit(m, f) # линейная модель
e = eBayes(fit) # тест Байеса
volcanoplot(e, coef=1, highlight=5, names=data$GeneName, xlab="Log Fold Change", ylab="Log Odds", pch=19, cex=0.67, col = "dark blue") # график-вулкан
z = rownames(m) = data[, 1]
hc <- hclust(dist(m), "ave") # кластерграмма
plot(hc)
plot(hc, hang = -1)
print(e$coefficients) # output eBayes coefficients
print(e$p.value) # get out the P values
toptable(e) # select 10 most differentialy expressed genes, the disadvantage that it outputs only the gene row number and not the name
printresult <-toptable(e) # assign the result to a variable
write.csv(printresult, file = "eBayesTableAneurism", row.names = TRUE) # write to the file in the current folder
volcanoplot(e, coef=1, highlight=10, names=data[,1], xlab="Log Fold Change", ylab="Log Odds", pch=19, cex=0.67, col = "red") # график-вулкан c именами
volcanoplot(e, coef=1, highlight=5, names=data[,1], xlab="Log Fold Change", ylab="Log Odds", pch=19, cex=0.67, col = "blue") # график-вулкан с именами (Volcano with gene names)https://stackoverflow.com/questions/22970546
复制相似问题