수백만 개의 행과 4 개의 열 (즉, Chromosome, Position, Allele1, Allele2)이있는 데이터 프레임 'df'를 처리하고 있습니다. 이제이 열의 문자를 하나의 별도 벡터 'cc'로 연결하고 싶습니다. 이것은 나의 첫 번째 시도입니다.
myfunc = function(CHR) {
chr = subset(df, df$Chromosome == CHR)
cc = data.frame(No=seq.int(nrow(chr)), pos_al1_al2=NA)
for (i in 1: nrow(chr)) {
cc$pos_al1_al2[i] = paste(CHR, chr$Position[i], ".", chr$Allele1[i], chr$Allele2[i])
cc = cc[, -1] # remove the column 'No'
}
}
# Run my code
myfunc(7)
CHR
함수에 입력 할 관심있는 염색체의 수는 어디에 있습니까 (예 : 1,2,3, ..., 또는 22). 물론 , 'df' CHR
열에서와 같이 1에서 22 사이의 범위에 있어야합니다 Chromosome
.
내 생각은 : 먼저 cc
행 수가 data.frame 'df'와 동일한 빈 벡터를 만들었습니다 .
이제 함수에서 볼 수 있듯이 각 행에 문자가 포함 된 cc
호출에 새 열을 만들었습니다 pos_al1_al2
.
계산 시간이 매우 느립니다. for 루프에서 온 것 같지만 내 기능을 최적화 할 생각이 없습니다.
도움을 주시면 감사하겠습니다! 미리 감사드립니다.
paste()
벡터화 모드에서 사용할 수없는 이유가 있습니까?
myfunc <- function(CHR) {
chr <- subset(df, df$Chromosome == CHR)
cc <- data.frame(No = seq.int(nrow(chr)), pos_al1_al2=NA)
cc$pos_al1_al2 <- paste(CHR, chr$Position, ".", chr$Allele1, chr$Allele2)
cc = cc[, -1] # remove the column 'No'
}
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다