R-级别功能返回null



我希望这很容易解决。每当我运行级别(DF(时,我都会给出一个空输出。这不是我的数据框架特定的,因为它使用了我使用的任何数据集。我认为我的一个包裹可能存在问题。有人遇到过这个问题还是知道修复程序?谢谢

初始化dataframe时,在初始化中通过stringsasfactors = t

例如。dataFrame <- read.csv(file.choose(), stringsAsFactors=T)

这使得r将字符串值视为因素。希望它能帮助

您只能在因子向量上,而不是在数据框架上运行levels

下面的示例

> df <- data.frame(a = factor(c('a','b','c'), levels = c('a','b','c','d','e')),
+                  b = factor(c('a','b','c')), 
+                  c = factor(c('a','a','c')))
> levels(df)
NULL

要查看数据框中每个列的级别,您可以使用lapply

> lapply(df, levels)
$a
[1] "a" "b" "c" "d" "e"
$b
[1] "a" "b" "c"
$c
[1] "a" "c"

如果要特定列的级别,则可以指定:

> levels(df[, 2])
[1] "a" "b" "c"

编辑:在下面回答有关apply(df, 2, levels)为什么返回NULL的问题。

请注意apply()的文档中的以下内容:

在所有情况下 设置尺寸之前的向量类型,以便(例如( 因子结果将被胁迫到角色阵列。

尝试上课并尝试其他一些功能时,您可以看到此行为。

> apply(df, 2, levels)
NULL
> apply(df, 2, class)
          a           b           c 
"character" "character" "character" 
> apply(df, 2, function(i) levels(i))
NULL
> apply(df, 2, function(i) levels(factor(i)))
$`a`
[1] "a" "b" "c"
$b
[1] "a" "b" "c"
$c
[1] "a" "c"

请注意,即使我们可以强迫apply()将列视为因素,但我们最初创建的df设置了先前的订购/级别(请参阅列`a`(。这是因为它已被强制为角色向量。

相关内容

  • 没有找到相关文章

最新更新