我有一个包含40多个不同类变量的大型数据框。大约一半的变量是字符,但是,我想强制那些变量因素,同时保留整数,逻辑等。
我尝试使用类似下面的lapply函数,但它强制所有变量而不仅仅是字符:
aframe2 <- as.data.frame(lapply(aframe1, factor))
我也试过as.data.frame(aframe1, stringsAsFactors=TRUE)
但没有成功。有什么我做错了或我可以用来做这个的其他功能吗?
答案 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)