2011-08-05 9 views
2

길이가 다른 데이터 프레임 저장에 대한 질문이 있습니다. 가변 길이를 가진 테이블을 NA를 넣지 않고 저장하는 방법이 있습니까? NA의 예가 나와 있습니다.하지만 저장하고 싶지 않습니다. 길이가 다른 데이터를 저장하지 않고 NA를 입력하지 마십시오.

x <- list(matrix(c(1,4,3,2), ncol = 2,     
dimnames = list(c("A","B"), NULL)),    
matrix(c(23,9,4,4,22,54), ncol = 2,     
dimnames = list(c("C","D","E"), NULL))) 

out <- lapply(x, rownames) 
foo <- function(x, max, repl = NA) {  
if(length(x) == max)   
out <- x  
else {   
out <- rep(repl, max)   
out[seq_along(x)] <- x  
}  
out 
} 
out <- lapply(out, foo, max = max(sapply(out, length))) 
(out <- do.call(rbind, out)) 

답변

3

목록을 만들고 write을 사용하여 파일에 쓸 것입니다. 다른 가능성이 있습니다 (?write에 대한 도움말 파일 참조).

myl <- list(a = letters[1:10], b = 1:3, c = "kaplah") #create some data 

# for every element in the list (`myl`), write that element to a file 
# and append if necessary. also, if list element is a character, write 
# to as many columns as there are characters. 
lapply(X = myl, FUN = function(x) { 
    write(x, append = T, file = "test.txt", ncolumns = length(x)) 
}) 

는 그 결과 그것은 dataframe을 할 필요가 없습니다

a b c d e f g h i j 
1 2 3 
kaplah 
2

데이터 프레임은 직사각형이어야 감사드립니다. 가변 길이 데이터를 저장하려면 목록을 사용해야합니다.

데이터 프레임에 데이터를 저장하려고하면 어떤 데이터가 필요합니까?

+0

, 나는 불평등 한 행이있는 테이블을 저장해야합니다. 그게 가능하니? – Lisann

+0

@Lisann, 한 번에 각 요소를 파일에 쓸 수 있습니다 ('? write', append = TRUE' 참조). –

+0

@Roman 예를 쓸 수 있습니까? 당신이 정확히 무슨 뜻인지 모르니까 .. 답변 주셔서 감사합니다. – Lisann