使用R函数将字符串替换为同一数据帧中的因子

时间:2017-07-11 21:31:48

标签: r character-encoding

我想将具有特定字符串代码的某些列转换为同一data.frame中的因子。但是,我对将data.frame列引用传递给我的函数的初始任务感到困扰。通过示例here及其链接页面,我相信以下内容应该有效:

   <div id= "one"><button class="button" id = "b1"></button></div>

但是,此操作的结果是#feed string to function set.seed(42) df <- data.frame( chr1 = sample(letters[1:4], 10, T), chr2 = sample(letters[4:7], 10, T), stringsAsFactors = F ) tofactor <- function(dat,column) { dat[,column] <- as.factor(dat[,column]) } tofactor(df, "chr1") typeof(df$chr1) 的字符串编码的持久性。我也尝试使用双方括号方法的参考没有成功。

感谢您的协助。

3 个答案:

答案 0 :(得分:0)

该功能正常运行,您需要做的就是将输出分配给原始(或新的df)。

df <- tofactor(df, "chr1")

如果你运行str(tofactor(df,"chr1")),你会得到回报:

Factor w/ 4 levels "a","b","c","d": 4 4 2 4 3 3 3 1 3 3

答案 1 :(得分:0)

另一种方法是使用mutate_at并指定var内的变量:

library(dplyr)

df <- data.frame(
  chr1 = sample(letters[1:4], 10, T),
  chr2 = sample(letters[4:7], 10, T), 
  stringsAsFactors = F
)

df2 <- df %>% 
 mutate_at(vars(chr1), as.factor)

class(df2$chr1) #[1] "factor"

答案 2 :(得分:0)

在更好地了解范围并向同事指示assign()之后,我已经到达:

set.seed(42)
df <- data.frame(
  chr1 = sample(letters[1:4], 10, T),
  chr2 = sample(letters[4:7], 10, T), 
  stringsAsFactors = F
)

tofactor <- function(dat,column) {
  dat[,column] <- as.factor(dat[,column])
  assign("df",dat, envir = .GlobalEnv)
}

tofactor(df, "chr1")
typeof(df$chr1)

此解决方案处理函数中的替换,允许重复使用,而无需在另外的步骤中分配输出。