2017-05-14 13 views
0

다른 솔루션을 검색했지만이 경우에는 작동하지 않습니다. 데이터 프레임을 압축하여 Factor 변수를 더미 새로운 변수에 확산시키는 함수를 만들었습니다. 일부 기계 학습 알고리즘은 Factors를 처리 할 수 ​​없습니다. 이를 위해 청소 기능 내부에서 spread() 기능을 사용합니다.열 이름을 R에있는 함수에 전달하는 중 이상한 오류가 발생했습니다.

여기 Error: Invalid column specification

코드입니다 : 내가 확산 할 필요가 컬럼의 이름을 전달하려고 할 때이 오류가 발생 내가 key = "state"key = as.character(substitute(name))를 교체 할 경우, 물론

library(tidyr) 
library(dplyr)  
library(C50) # this is one source for the churn data 
data(churn) 


f <- function(df, name) { 
    df$dummy <- c(1:nrow(df))  # create dummy variable with unique values 

    df <- spread(df, key <- as.character(substitute(name)), "dummy", fill = 0) 
} 

churnTrain = f(churnTrain, name = "state") 
str(churnTrain) 

그 잘 작동하지만 전체 기능이 재사용 성을 잃어 버린다. 나는 며칠 동안 사냥 솔루션을 구글에 문의했지만 아무것도 작동하지 않는다. 여기에서 R의 데이터 집합을 사용하므로 결과를 쉽게 복제 할 수 있습니다. 오류없이 내부 함수에 열 이름을 전달하는 방법은 무엇입니까?

도움 주셔서 감사합니다.

답변

0

tidyverse을 사용해야합니까?

하지 않으면, 당신은 이전 reshape2 패키지를 시도 할 수 있습니다 : 당신이 절대적으로 tidyverse에서 작업해야하는 경우 http://dplyr.tidyverse.org/articles/programming.html의 튜토리얼 다음 시도 할 수 있습니다

 

library(reshape2) 
library(C50) # this is one source for the churn data 
data(churn) 

f <- function(df1, name) { 
    df1$dummy <- 1:nrow(df1) # create dummy variable with unique values 
    df1 <- dcast(df1, as.formula(paste0("dummy~", name))) 
} 

ct1 <- f(churnTrain, name = "state") 

. 불행히도, 그들의 예제는 내 컴퓨터에서 작동하지 않습니다.

0
library(tidyr) 
library(dplyr)  
library(C50) # this is one source for the churn data 
data(churn) 


f <- function(df, name) { 
    df$dummy <- c(1:nrow(df))  # create dummy variable with unique values 

    df <- spread_(df, key = name, "dummy", fill = 0) 
} 

churnTrain = f(churnTrain, name = "state") 
str(churnTrain)