相当简单的问题,但我的 R 知识不是很好。
介绍
我正在使用包 Survdiff。使用一次就可以了,但我想通过许多变量循环它。
例如:我有一个包含 43000 个变量和 177 个观察值的数据框。data.frame 也有 3 个初始变量;第一个只是一个身份号码,第二个是“时间”,第三个是“cens”。Survdiff 软件包需要时间和 cens。但由此可知,我们要循环遍历data.frame中的剩余变量,即Genedata[,4:43000]
到目前为止,我通常会使用 for 语句,但在 R 中我知道这可能比 apply 语句慢得多。
cols <- as.list( names(Genedata) ) #generate a list of column numbers
Geneset <- lapply(cols , function (x) { survdiff( Surv( Genedata$time, Genedata$cens=="1" ) ~ x , data = Genedata )$chisq } )
但是 - 我收到一个错误
"Error in model.frame.default(formula = Surv(Genedata$time, Genedata$cens == :
variable lengths differ (found for 'x')"
数据样本(前 15 行和 8 列) -注意:标题已溢出
Accession time cens A1BG.229819_at A1BG_AS1.232462_s_at A1CF.220951_s_at A1CF.241547_at A2LD1.232422_at
1 120 0 0 0 0 0 1
2 120 0 0 0 0 0 1
3 28.96 NA 1 0 0 0 1
4 119.21 0 0 0 0 0 1
5 59.53 0 0 1 0 0 1
6 68.81 1 0 0 0 0 1
7 82.29 0 0 0 0 0 1
8 110.82 0 0 0 0 0 1
9 65.88 NA 1 0 0 0 1
10 84.13 0 0 0 0 0 1
11 16.47 NA 0 0 0 0 1
12 89.75 0 0 0 1 1 1
13 76.07 0 0 0 0 0 1
14 67.82 0 0 0 0 0 1
问题
- 我不确定在这种情况下如何正确使用“应用”,因为该功能更复杂。
更新1
更改为 FUN=function(x).... 现在错误消失了。相反,我得到
dim(X) must have a positive length
然而 dim(GeneMatrix) 返回正值...
更新2
更多调整后更新代码