그래서이 루프가 있고 여러 csv 파일을 씁니다. 각각의 파일은 실행 결과에 추가됩니다. 아래에서 볼 수 있듯이,이 특정 루프는 gex에서 mxy에 대한 부분 집합의 각 행에 통계 함수 (zScore)를 실행 한 다음 각 행의 결과를 게시 한 다음 gex의 다음 하위 집합으로 이동합니다.R : for 루프에서 데이터 프레임에 추가하기
제 질문은 첨부 된 결과를 csv 파일로 작성하는 대신 동일한 모양의 루프 내에서 데이터 프레임을 만들 수있는 방법이 있습니까?
친절한 도움에 감사드립니다. 게시 된 코드에서
gex <- data.frame("sample" = c("BIX","HEF","TUR","ZOP","VAG"),
"TCGA-F4-6703-01" = runif(5, -1, 1),
"TCGA-DM-A28E-01" = runif(5, -1, 1),
"TCGA-AY-6197-01" = runif(5, -1, 1),
"TCGA-A6-5657-01" = runif(5, -1, 1))
colnames(gex) <- gsub("[.]", "_",colnames(gex))
listx <- c("TCGA_DM_A28E_01","TCGA_A6_5657_01")
mxy <- data.frame("TCGA-AD-6963-01" = runif(5, -1, 1),
"TCGA-AA-3663-11" = runif(5, -1, 1),
"TCGA-AD-6901-01" = runif(5, -1, 1),
"TCGA-AZ-2511-01" = runif(5, -1, 1),
"TCGA-A6-A567-01" = runif(5, -1, 1))
colnames(mxy) <- gsub("[.]", "_",colnames(mxy))
zScore <- function(x,y)((as.numeric(x) - as.numeric(rowMeans(y,na.rm=T)))/as.numeric(sd(y,na.rm=T)))
for(i in seq(nrow(mxy))){
for(colName in listx){
zvalues <- zScore(gex[i,colName],
mxy[i,])
geneexptest <- data.frame(gex$sample[i], zvalues, row.names = NULL,
stringsAsFactors = TRUE)
write.table(geneexptest, file = paste0(colName, "mxyinput", ".csv"),
row.names=FALSE, col.names=FALSE, quote=F,
sep = ",", dec = ".", append=(i > 1))
}
}
루프 밖에서 데이터 프레임을 선언 한 다음'rbind' 또는'cbind'를 사용하여 루프의 각 반복에서 행이나 열을 추가 하시겠습니까? –
안녕하세요, @SamFirke, 의견에 감사드립니다. 어떻게 루프의 각 반복을 활용하면서 "루프 외부의 데이터 프레임을 선언합니까?" –
@SamFirke 이것은 R에서 매우 비효율적입니다. [The R Inferno] (http://www.burns-stat.com/pages/Tutor/R_inferno.pdf)의 Circle 2를 확인하십시오. – josliber