我有几个变量,其名称都以我的数据框中的相同模式开始(大约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;开头)但到目前为止没有运气。
答案 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)