使用R的summary()未显示字符列,与swirl教程预期不符如何解决?
解决summary()不显示数据框字符列的问题
问题核心是新老版本R对字符型列的默认处理逻辑不同:2021年的教程用的旧版R默认会把字符列自动转为因子(stringsAsFactors=TRUE),而你的最新版R默认stringsAsFactors=FALSE,字符列保持原类型,summary()对纯字符列只会输出长度、类型、模式,不会像因子那样展示频数统计,所以和教程输出不符。
给你几个实用解决方法:
把字符列转成因子后再用summary:
单列转换:plants$列名 <- as.factor(plants$列名)
批量转换所有字符列(基础R写法):char_cols <- sapply(plants, is.character) plants[char_cols] <- lapply(plants[char_cols], as.factor)转完再跑
summary(plants),就能看到和教程一致的因子频数统计。用更全面的统计函数替代summary:
比如skimr包的skim()函数,能同时展示字符、数值、因子等所有类型列的详细统计信息,安装后直接跑skim(plants)就行。临时切换旧版默认设置:
执行options(stringsAsFactors=TRUE)后重新调用swirl生成数据的代码,新读入的字符列会自动转因子,summary输出就和教程一致了。注意这个设置是全局的,用完可以改回options(stringsAsFactors=FALSE)。
内容的提问来源于stack exchange,提问作者RandomGuy57
相关产品推荐
相关产品推荐

