R 如果不使用apply,如何检查数据帧中的列是否为因子?
我目前有一个函数,它使用sapply来检查列是否是数据帧,当我在另一个函数中调用它时,它会给我带来问题。长话短说,我只是想看看是否有其他方法可以做到这一点R 如果不使用apply,如何检查数据帧中的列是否为因子?,r,R,我目前有一个函数,它使用sapply来检查列是否是数据帧,当我在另一个函数中调用它时,它会给我带来问题。长话短说,我只是想看看是否有其他方法可以做到这一点 if (sapply(df[,col],is.factor)) { 这是我目前正在使用的,但我想取消apply的使用。既然在if中使用它,为什么不直接将is.factor函数应用于列呢 if(is.factor(df[,col])){ .... } 这里有一个黑客。 我无法判断它是否适用于问题的情况,因为没有数据集示例。我将使
if (sapply(df[,col],is.factor)) {
这是我目前正在使用的,但我想取消apply的使用。既然在if中使用它,为什么不直接将is.factor函数应用于列呢
if(is.factor(df[,col])){
....
}
这里有一个黑客。 我无法判断它是否适用于问题的情况,因为没有数据集示例。我将使用内置数据集
iris
col <- "Species"
s <- capture.output(str(iris))
grepl("Factor", s[grep(col, s)])
#[1] TRUE
col如果您知道列的名称,为什么不is.factor(df$col)
?
checkFactorCol <- function(x, col){
s <- capture.output(str(x))
grepl("Factor", s[grep(col, s)])
}
checkFactorCol(iris, "Sepal.Length") # FALSE
checkFactorCol(iris, "Species") # TRUE
checkFactorCol <- Vectorize(checkFactorCol, "col")
checkFactorCol(iris, names(iris))
#Sepal.Length Sepal.Width Petal.Length Petal.Width Species
# FALSE FALSE FALSE FALSE TRUE