2017-01-15 1 views
0

연산자 나는 m를 특정 값에 대한공동 사용 및 R

for (i in 1:12) { 
    m<-as.data.frame(matrix(100,nrow = nrow(d3),ncol = ncol(d3))) 
    if (!is.factor(d3[,i])){ 
    m[,i]<-d3[,i] 
    } 
    } 

을 dataframe D3에서 이외의 모든 요소를 ​​수집하고 테이블에 넣어하고자하는 "경우" 나는 (예 : i = 2), 나는 내가 원하는 것을 얻는다. 그러나 반복은 작동하지 않습니다. 위 코드에서 어디에서 실수를합니까?

+0

** dplyr ** 패키지에서 ** mutate_if ** 기능으로 실험 할 수 있습니다. 다음과 비슷한 것이 작동해야 함 ** dplyr :: mutate_if (! is.factor) %> % as.table() ** – Ferdi

+0

귀하의 질문을 편집하고 "반복 하시겠습니까?" 작동하지". – Uwe

+0

그리고'd3' 데이터를 제공하는 것이 큰 도움이 될 것입니다. – SymbolixAU

답변

4

루프를 통해 매번 m을 재생성하고 있습니다. 그것은 밖에 있어야합니다.

m <- as.data.frame(matrix(100, nrow = nrow(d3), ncol = ncol(d3))) 
for (i in 1:12) { 
    if (!is.factor(d3[, i])) { 
    m[, i] <- d3[, i] 
    } 
} 

하지만 실제로 한 번에 모두 벡터화 작업을 사용해야합니다.

nonf <- !sapply(d3, is.factor) 
m[, nonf] <- d3[, nonf]