gpt4 book ai didi

r - 级别函数返回NULL

转载 作者:行者123 更新时间:2023-12-01 09:45:57 25 4
gpt4 key购买 nike

我希望这是一个简单的解决方法。每当我运行level(df)时,我都会得到NULL输出。这不是我的数据框所特有的,因为它与我使用的任何数据集一起发生。我认为我的一个包装可能有问题。有人遇到过这个问题或知道解决方法吗?谢谢

最佳答案

您只能在因子向量上运行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()文档中的以下内容:

In all cases the result is coerced by as.vector to one of the basic vector types before the dimensions are set, so that (for example) factor results will be coerced to a character array.



当您尝试上课并尝试其他一些功能时,您会看到此行为。
> 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`列)。这是因为它已被强制转换为字符向量。

关于r - 级别函数返回NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48654453/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com