R: 无法保存对象的一个元素

3

我正在尝试保存一个对象,但是失败了:

> save("MEs", "moduleColors", "net$dendrograms", file = "TNF_AH-network-auto.RData")
Error in save("MEs", "moduleColors", "net$dendrograms", file = "TNF_AH-network-auto.RData") : 
  object ‘net$dendrograms’ not found
> save(list=c("MEs", "moduleColors", "net$dendrograms"), file = "TNF_AH-network-auto.RData")
Error in save(list = c("MEs", "moduleColors", "net$dendrograms"), file = "TNF_AH-network-auto.RData") : 
  object ‘net$dendrograms’ not found
> save(list=c(MEs, moduleColors, net$dendrograms), file = "TNF_AH-network-auto.RData")
Error in FUN(X[[i]], ...) : invalid first argument
> save(MEs, moduleColors, as.vector(net$dendrograms), file = "TNF_AH-network-auto.RData") 
Error in save(MEs, moduleColors, as.vector(net$dendrograms), file = "TNF_AH-network-auto.RData") : 
  object ‘as.vector(net$dendrograms)’ not found
> save(MEs, moduleColors, list(net$dendrograms), file = "TNF_AH-network-auto.RData")
Error in save(MEs, moduleColors, list(net$dendrograms), file = "TNF_AH-network-auto.RData") : 
  object ‘list(net$dendrograms)’ not found
> head(net$dendrograms)
[[1]]

Call:
fastcluster::hclust(d = as.dist(dissTom), method = "average")
...
> ls(net)
 [1] "blockGenes"     "blocks"         "colors"         "dendrograms"   
 [5] "goodGenes"      "goodSamples"    "MEs"            "MEsOK"         
 [9] "TOMFiles"       "unmergedColors"

我可以访问它并使用saveRDS保存它:
> saveRDS(net$dendrograms, "dendro")
> 

或者我可以使用以下方式保存:

> tmp <- list(net$dendrograms)
> save(MEs, moduleColors, tmp, file = "TNF_AH-network-auto.RData")
> 

为什么我无法像预期的那样使用save(MEs, moduleColors, net$dendrograms, file = "TNF_AH-network-auto.RData")保存对象?

sessionInfo:

> sessionInfo()
R version 3.2.3 (2015-12-10)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu 14.04.2 LTS

locale:
 [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C              
 [3] LC_TIME=es_ES.UTF-8        LC_COLLATE=en_US.UTF-8    
 [5] LC_MONETARY=es_ES.UTF-8    LC_MESSAGES=en_US.UTF-8   
 [7] LC_PAPER=es_ES.UTF-8       LC_NAME=C                 
 [9] LC_ADDRESS=C               LC_TELEPHONE=C            
[11] LC_MEASUREMENT=es_ES.UTF-8 LC_IDENTIFICATION=C       

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] WGCNA_1.51            RSQLite_1.0.0         DBI_0.4-1            
[4] fastcluster_1.1.20    dynamicTreeCut_1.63-1

loaded via a namespace (and not attached):
 [1] Rcpp_0.12.5           RColorBrewer_1.1-2    GenomeInfoDb_1.4.3   
 [4] plyr_1.8.4            iterators_1.0.8       tools_3.2.3          
 [7] rpart_4.1-10          preprocessCore_1.30.0 gtable_0.2.0         
[10] lattice_0.20-33       Matrix_1.2-6          foreach_1.4.3        
[13] parallel_3.2.3        gridExtra_2.2.1       cluster_2.0.4        
[16] S4Vectors_0.6.6       IRanges_2.2.9         stats4_3.2.3         
[19] grid_3.2.3            nnet_7.3-12           impute_1.42.0        
[22] Biobase_2.28.0        data.table_1.9.6      AnnotationDbi_1.30.1 
[25] survival_2.39-4       foreign_0.8-66        latticeExtra_0.6-28  
[28] Formula_1.2-1         GO.db_3.1.2           ggplot2_2.1.0        
[31] Hmisc_3.17-4          scales_0.4.0          codetools_0.2-14     
[34] matrixStats_0.50.2    splines_3.2.3         BiocGenerics_0.14.0  
[37] colorspace_1.2-6      acepack_1.3-3.3       doParallel_1.0.10    
[40] munsell_0.4.3         chron_2.3-47  

1
尝试将MEs、moduleColors和net$dendrograms转换为向量并保存到"TNF_AH-network-auto.RData"文件中。 - CClaire
@CClaire 尝试失败,已编辑问题。 - llrs
1
也许可以使用 tmp <- list(net$dendrograms); save(MEs, moduleColors, tmp, file = "TNF_AH-network-auto.RData")。 - CClaire
@CClaire 意外地起作用了。我会重新表述问题,以理解这种行为。 - llrs
1个回答

4

我自己也遇到过这个问题。我不知道为什么,但是来自basesave命令只能保存整个对象。据我所知,无法仅保存数据框架的一列。我的解决方法是:

netDendongrams <- net$dendogrames
save("MEs", "moduleColors", "netDendongrams ", file = "TNF_AH-network-auto.RData")

这正是@CClaire在评论中的答案。 - Christophe D.
不完全像MarcelG那样使用列表并更好地解释了函数save的特殊性。 - llrs
@ChristopheD。抱歉,在我回答时,那个评论还没有出现(或者我没有看到)。 - StatMan
当我读到OP的问题标题时,我意识到问题在于我保存了一个元素,而不是整个对象。你的解决方案正是我在阅读你的解决方案之前已经完成的,所以它一定很好! - Caleb

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接