如何根据子串匹配结果引用变量

时间:2015-08-12 20:41:02

标签: r grep

我想为数据框中的变量添加值标签。但是,变量名称基于子字符串匹配结果。例如,我试图寻找一个名称包含字符串“Gender"”的变量,所以我使用了代码

mn<-grep("Gender",names(data),value=TRUE)

找到变量。

然后我想为该变量添加值标签,我试过:

data$mn<-factor(data$mn,levels=c(2,3),labels=c("Male","Female"))

但它不起作用。有人可以帮我解决问题吗?非常感谢

1 个答案:

答案 0 :(得分:1)

如果有多个变量符合&#39;性别&#39;在名称中,我们可以使用lapply循环它。

 data[,mn] <- lapply(data[,mn], function(x)
             factor(x, levels=2:3, labels=c('Male', 'Female'))

如果&#39; mn&#39;长度为1,即只匹配一列,我们不需要循环(如@Angela Ju的评论所示)

 data[,mn] <- factor(data[,mn],levels=c(2,3),labels=c("Male","Female"))