2014-03-25 5 views
0

ifelse을 사용하여 R에 새 값 (코드) 배수 열을 할당하려고했습니다. 나는 한 번에 코딩 할 모든 열을 선택할 수있는 경우 대신 여러 ifelse주기여러 열에 새 값을 할당

df <- data.frame(letters[1:10], 
       letters[1:2], 
       rep(c("HemoSeq1", "PLG_FL1"), each=5), 
       rep(0:4, each=2), 
       rep(4:0, each=2), 
       rep(4:0,each=2), 
       rep(0:4,each=2)) 
names(df) <-c("Sample", "Project", "Bait.Set", "ge1", "ge2", "ge3", "ge4") 

df$ge1 <- ifelse(df$ge1 >= 1, 1, 0) 
.... 
df$ge4 <- ifelse(df$ge4 >= 1, 1, 0) 

의 궁금 또는주기

for(i in 4:7) { 
    df[i] <- ifelse(df[i] >= 1, 1, 0) 
} 
에 대한

감사를 사용했다!

답변

0

당신이하지 for 또는 lapply 같은 명시 적 루프를 포함하는 소위 "벡터화"작업이며,이

df[4:7] <- df[4:7] >= 1    # Gives you the result as logicals 
df[4:7] <- as.integer(df[4:7] >= 1) # Gives you the result as integers 

처럼 한 번에 모든 열을 할당 할 수 있습니다. 비 벡터화 솔루션보다 훨씬 빠르기 때문에 많은 양의 데이터가있는 경우이를 사용하도록 항상 노력하십시오.

0
gt1 <- df[,4:7] >= 1 
df[,4:7][gt1] <- 1 
df[,4:7][!gt1] <- 0 
당신이 열

관련 정수 또는 문자 벡터로 4:7의 모든 인스턴스를 대체 할 수

관련 문제