Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 测试因子的值_R - Fatal编程技术网

R 测试因子的值

R 测试因子的值,r,R,我有一个向量数据的因素,其水平是(0)否,(1)是和(8)剩余 这是该向量的第二个元素data[2]的值: (1) 对 我不明白的是数据[2]=“Yes”的值是假的。同样令人惊讶的是as.integer(数据[2])的值是2。不是应该是1吗?数据[2]=“Yes”的值不应该是真的吗 我刚开始使用R,所以我对它还不太了解,但我真的不明白这一点。有人能给我解释一下发生了什么事吗? < P>我不确定0, 1和8是从哪里来的,但是考虑一下这个可重复的例子: 加载数据 [1] 对 级别:无是残留 评估第二

我有一个向量数据的因素,其水平是(0)否,(1)是和(8)剩余

这是该向量的第二个元素data[2]的值: (1) 对

我不明白的是数据[2]=“Yes”的值是假的。同样令人惊讶的是as.integer(数据[2])的值是2。不是应该是1吗?数据[2]=“Yes”的值不应该是真的吗


我刚开始使用R,所以我对它还不太了解,但我真的不明白这一点。有人能给我解释一下发生了什么事吗?

< P>我不确定0, 1和8是从哪里来的,但是考虑一下这个可重复的例子:

加载数据 [1] 对

级别:无是残留

评估第二个值 dt[2]=“是”

[1] 真的

这将返回
2
,因为
Yes
是第二个因子级别

[1] 二,


在幕后,因子不是由字符表示的,而是由其整数因子级别表示的。尽管打印(dt[2])的结果看起来像一个字符,
R
通过其因子级别对其进行评估。

请提供一个(例如数据的
dput()
)以便我们可以看到真正的结果。不确定您如何同时拥有数字0/1/8和否/是/剩余。R中的因子并不是这样工作的。每个级别从1开始获得一个顺序整数值。虽然这是一个R语言问题,但在使用可复制的示例重写并提供其他上下文后,您可能希望在交叉验证(甚至迁移到那里)时询问它。鉴于对一个答案的评论,这也是合理的,其中OP Philippe提到数据集的一个非常规方面(即向量中因子的非典型标记),可能导致异常行为。如果数据集的非常规方面可以与统计意义上的非标准方面联系起来,那么交叉发布或问题迁移似乎是合理的。我自己解决了这个问题,这只是一个糟糕的问题,因为我对因素感到困惑。
dt[2]==“Yes”
也是正确的。您不应该需要
作为.character()
。这不是必需的。当我键入数据[2]时,输出如下:[1](1)是级别:(0)否(1)是(8)剩余我知道为什么as.integer(数据[2])的值为2。但我仍然不明白为什么数据[2]=“是”的值不是真的。我认为,正如Flick先生所说,没有必要先使用as.character将其转换为字符串。事实上,当我对另一个数据集执行此操作时,它按预期工作。这是因为as.character(数据[2])的值为“(1)Yes”。
 dt <- factor(c("No", "Yes", "Residue"), levels = c("No", "Yes", "Residue"))
 dt[2]
as.integer(dt[2])