2016-01-25 151 views
-2

如何使用R基本函數將不同類變量的列表寫入文本文件中?將具有不同類別元素的列表寫入文本文件

writecat無法處理data.frames和write.table僅針對表格。他們都沒有妥善處理清單。 樣品清單:

> test 
[[1]] 
[1] "a" "b" "c" 

[[2]] 
[1] "d" "e" "f" 

[[3]] 
[1] 1 2 3 

[[4]] 
    X.g. X.h. X.i. 
1 g h i 

[[5]] 
[[5]][[1]] 
[1] "k" 

[[5]][[2]] 
[1] "l" 

[[5]][[3]] 
[1] "m" "n" 


[[6]] 
[1] "2015-03-23 11:15:00 CET" 

它包括characternumericPOSIXlt時間變量與另一個列表中。

期望的結果 - 像這樣的文本文件:

write_list <- function (outlist, outfile,append=FALSE) { 
    for (i in 1:length(outlist)) { 
     if (i==1) app=append else app=TRUE 
     if (is.character(outlist[[i]]) || is.numeric(outlist[[i]])) write(paste(outlist[[i]],collapse = " "),outfile, append=app) 
     else 
     if (is.data.frame(outlist[[i]])) write.table(outlist[[i]],outfile, append=app, quote=FALSE, sep="\t") 
     else 
      if (is.POSIXlt(outlist[[i]])) write (as.character(outlist[[i]]),outfile, append=app) 
      else 
      if (is.list(outlist[[i]])) write_list(outlist = outlist[[i]], outfile, append = TRUE) 

    } 
} 

is.POSIXlt是:

a b c 
d e f 
1 2 3 
X.g. X.h. X.i. 
1 g h i 
k 
l 
m n 
2015-03-23 11:15:00 

回答

-1

我一個做了一個腳本,通過類的元素來處理名單,並將其打印到文件中的一個自定義功能:

is.POSIXlt <- function (ts) { 
isPOS=c("POSIXlt", "POSIXt") 

identical (class(ts),isPOS) 
} 

最後的if聲明是一個復現一次呼叫 - 「列表清單」情況的一種情況。它調用自己的內部列表並按元素處理它。

相關問題