2013-06-12 27 views
-1

폴더에 하나의 파일에서이 스크립트를 실행 :왜이 스크립트에서 lapply 임의의 NA 값을 생성합니까?

emboss<-read.table("emboss_012.ss",header=T) 
x<-table(emboss[,2],emboss[,3])/NROW(emboss[,3]) 
y<-as.vector(t(x)) 
nms <- expand.grid(colnames(x), rownames(x)) 
names(y) <- paste(nms[,2],nms[,1],sep="") 
write.table(t(y), file = "test3.csv",append=TRUE) 

을 내가 원하는 결과

그러나

임의 NA의 등장에있는 폴더 결과에있는 모든 파일을 한 번에이 일을 얻을. 나는 이것을하고있는 중이 야 :

runForAll <- function(x) { 
    emboss <- read.table(x,header=T) 
    x <- table(emboss[,2],emboss[,3])/NROW(emboss[,3]) 
    y <- as.vector(t(x)) 
    nms <- expand.grid(colnames(x), rownames(x)) 
    names(y) <- paste(nms[,2],nms[,1],sep="") 
    return(t(y)) 
} 

my.files <- list.files(pattern = "emboss_\\d+\\.ss") 
outputs <- lapply(my.files, FUN = runForAll) 

library(plyr) 
one.header.output <- rbind.fill.matrix(outputs) 
write.table(one.header.output, file = "nontpsec.csv") 

내 파일은 여기에 있습니다 : 심지어

https://drive.google.com/folderview?id=0B0iDswLYaZ0zWjQ4RjdnMEUzUW8&usp=sharing 

이 매우 이상이며 다른 모든 데이터가 올 특히, 무슨 일이 일어나고 수없는 이유 한 번에 모든 파일을 반복 할 때.

+0

as.matrix (출력)를 호출하면 위반에 대한 길이의 감소를 보여줍니다 흥미로운 것을

이 게시물에서보세요 파일. 각 출력을 볼 때 누락 된 데이터가없는 경우에도 마찬가지입니다. – brucezepplin

+1

내 경험에 비추어 볼 때 최소한의 자체 포함 된 예제를 만들 때 가장 좋은 결과를 얻습니다. 문제는 95 %의 경우에서 분명합니다 (나를 위해). 미래에 이러한 예제를 게시하는 것을 고려하십시오 (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example 참조). –

답변

2

데이터 테이블의 길이가 다릅니다. 첫 번째 행은 마지막 행만 19 행 20 개 있습니다! 여기가 문제의 원인입니다.

tmp <- c("A", "C", "D", "E", "F", "G", "H", "I", "K", "L", "M", "N", "P", "Q", "R", "S", "T", "V", "W", "Y") 

which(rownames(x) %in% tmp) 
파일 (12)의 경우

13 번째 행이없는 (라벨 B)

여기 작은 시험이다.

Compare two data.frames to find the rows in data.frame 1 that are not present in data.frame 2

이 당신을 위해 작동 할 수 있습니다 :

Fastest way to add rows for missing values in a data.frame?

관련 문제