r:在保留其他类时仅强制使用字符变量

时间:2016-04-07 17:29:33

标签: r

我有一个包含40多个不同类变量的大型数据框。大约一半的变量是字符,但是,我想强制那些变量因素,同时保留整数,逻辑等。

我尝试使用类似下面的lapply函数,但它强制所有变量而不仅仅是字符:

aframe2 <- as.data.frame(lapply(aframe1, factor))

我也试过as.data.frame(aframe1, stringsAsFactors=TRUE)但没有成功。有什么我做错了或我可以用来做这个的其他功能吗?

1 个答案:

答案 0 :(得分:1)

这可以通过使用if/else语句

来解决
aframe1[] <- lapply(aframe1, function(x) if(is.character(x)) factor(x) else x)

或为factor列创建索引并仅在这些列上循环

i1 <- sapply(aframe1, is.character)
aframe1[i1] <- lapply(aframe1[i1], factor)