以编程方式将类更改为自定义类

使用openxlsx软件包准备将数据openxlsx写入excel工作簿,我可以使用每列的列方式在openxlsx的小插图中运行示例来更改variables的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来更改名称与给定string匹配的列的类(如下所示)。

我到目前为止所尝试的是:

 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有一个错误。 它应该看起来像这样:

 fn_toPercentage <- function(x){ class(x)<-"percentage" x } 
Interesting Posts