r语言 - 为什么数据框架中的列在子集和应用时改变类



我试图在数据框架中添加一个汇总行,详细说明每个列的级别。我在整个框架中应用关卡功能时遇到了一个问题。我认为原因是单独处理的列被视为因子向量,但是当使用apply函数时,它们被视为字符:

a = c("a","b","c")
b = c("d","e","f")
m = cbind(a,b)
df = as.data.frame(m)
class(df[,1])
[1] "factor"
apply(df, MARGIN=2, class)
          a           b 
"character" "character" 

我认为这是问题的原因:

levels(df[,1])
[1] "a" "b" "c"
apply(df, MARGIN=2, levels)
NULL

我看了一下有关应用程序、数据框架和web的帮助文档。有人能解释一下这是为什么吗?

你可以使用lapply或sapply函数来了解你的变量类,在我的理解中,apply通过列元素的方式,每个元素都是一个字符,所以输出显示为一个字符,而lapply和sapply函数对变量工作,所以它给变量类它作为字符或因子

lapply(df,class)
$a
[1] "factor"
$b
[1] "factor"
sapply(df,class)
       a        b 
"factor" "factor" 

最新更新