在R中一次格式化许多变量的类

时间:2016-07-05 16:26:42

标签: r

我有几个变量,其名称都以我的数据框中的相同模式开始(大约20个)。 R以字符形式读取它们,但它们应格式化为因子。

下面我提供了一个可比较的(只是小得多)数据框。

animal.farm <- data.frame(matrix(0, 5, 0))
set.seed(1)
animal.farm$ord.3 <- sample(1:4, 5, replace=T)
animal.farm$ani.4 <- sample(c("dog", "horse", "mink"), 5, replace=T)
animal.farm$ani.5 <- sample(c("fun", "boring", "clever"), 5, replace=T)

我已经尝试过两次

ls(pattern = "animal.farm$ani")

apropos("animal.farm$ani")

这样我就可以将factor()应用于所有带有一行或两行代码的变量(在这种情况下以&#34; ani&#34;开头)但到目前为止没有运气。

2 个答案:

答案 0 :(得分:1)

使用stringr检测以ani

开头的列名称
library(stringr)
cols <- str_detect(colnames(animal.farm), "^ani")
animal.farm[,cols] <- lapply(animal.farm[,cols], as.factor)

答案 1 :(得分:1)

一个简单的基础R解决方案:

id <- grep("^ani", names(animal.farm))
animal.farm[id] <- lapply(animal.farm[id], as.factor)