2016-11-10 1 views
1

으로 변경하고 openxlsx을 사용하여 엑셀 통합 문서에 데이터 프레임 작성을 준비한 다음 openxlsx's vignette 열을 사용하여 변수 class을 변경하여 예제를 실행할 수 있습니다.프로그래밍 방식으로 클래스를 사용자 지정 클래스

## data.frame to write 
df <- data.frame("Date" = Sys.Date()-0:4, 
"Logical" = c(TRUE, FALSE, TRUE, TRUE, FALSE), 
"Currency" = paste("$",-2:2), 
"Accounting" = -2:2, 
"hLink" = "http://cran.r-project.org/", 
"Percentage" = seq(-1, 1, length.out=5), 
"TinyNumber" = runif(5)/1E9, stringsAsFactors = FALSE) 

## Below comes the custom class assignation used for excel formatting 
class(df$Currency) <- "currency" 
class(df$Accounting) <- "accounting" 
class(df$hLink)  <- "hyperlink" 
class(df$Percentage) <- "percentage" 
class(df$TinyNumber) <- "scientific" 

## Works ! 
class(df$Percentage) 
[1] "percentage" 

내 자신의 데이터 세트로 작업하기 위해 나는 이름이 주어진 문자열과 일치한다 (아래로) 컬럼의 클래스를 변경하는 dplyr를 사용하고 싶습니다. 내가 지금까지 시도했습니다 무엇

는 :

require(tidyverse) 
fn_toPercentage <- function(x){class(x)<-"percentage"} 

df2 <- df %>% 
    mutate_at(vars(starts_with("Percent")),funs(fn_toPercentage)) 

## Check: 
lapply(df2,class) 
$Date 
[1] "Date" 

$Logical 
[1] "logical" 

$Currency 
[1] "character" 

$Accounting 
[1] "integer" 

$hLink 
[1] "character" 

## Failed !  
$Percentage 
[1] "character" 

$TinyNumber 
[1] "numeric" 

나는 기능 setAs 내 문제에 관련이있을 수 있다는 느낌을 가지고,하지만 난 그것을 사용하는 방법을 알아낼 수 없습니다. fn_toPercentage에 오류가 같은 당신의 도움

답변

0

에 대한

감사 보인다. 다음과 같이 표시되어야합니다.

fn_toPercentage <- function(x){ 
    class(x)<-"percentage" 
    x 
} 
+0

고맙습니다. 그레고리! – Cazz

관련 문제