R通配符,sapply和as.factor
我想将数据帧中名称与特定模式匹配的所有变量的类型更改为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变量的级别,那么我可以做
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)