R通配符,sapply和as.factor

R通配符,sapply和as.factor,r,sapply,R,Sapply,我想将数据帧中名称与特定模式匹配的所有变量的类型更改为factor 因此,在这里,我试图将数据帧df中名称以namestub开头的所有变量的类型更改为factor attach(df) sapply(grep(glob2rx("namestub*"), names(df)), as.factor) 但从那以后就没用了 > levels(df$namestub1) NULL ##制作一个可复制的示例 谢谢你,乔希!因此,如果我想一次性改变所有grepped变量的级别,那么我可以做

我想将数据帧中名称与特定模式匹配的所有变量的类型更改为factor

因此,在这里,我试图将数据帧
df
中名称以namestub开头的所有变量的类型更改为factor

attach(df)    
sapply(grep(glob2rx("namestub*"), names(df)), as.factor)
但从那以后就没用了

> levels(df$namestub1)
NULL
##制作一个可复制的示例

谢谢你,乔希!因此,如果我想一次性改变所有grepped变量的级别,那么我可以做
levels(df[ii])不,这也有点混乱。我建议单独查看最后一行代码的左侧和右侧返回的对象(使用
str()
is()
length()
,等等),然后阅读
?lappy
。新级别的分配(使用
levels创建
ii
是一个向量,因此使用以下循环:
for(i in seq(沿=ii)){levels(df[,ii[i]])或仅
for(i in ii)levels(df[,i]),如果您想使用
lappy
干净地设置级别:
df[ii]
## Make a reproducible example
df <- data.frame(namestubA = letters[1:5], B = letters[5:1], 
                 namestubC = LETTERS[1:5], stringsAsFactors=FALSE)

## Get indices of columns to convert
ii <- grep(glob2rx("namestub*"), names(df))

## Convert and replace the indicated columns
df[ii] <- lapply(df[ii], as.factor)