Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/78.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 combn未分类因子变量 更新:已修复_R_Syntax - Fatal编程技术网

R combn未分类因子变量 更新:已修复

R combn未分类因子变量 更新:已修复,r,syntax,R,Syntax,这在即将发布的R3.1.0中得到了修复。从变更日志: combn(x,simplify=TRUE)现在为因子输入提供因子结果 x(以前的用户错误)。 有关 我只是注意到一件奇怪的事。为什么combn似乎会将因子变量取消分类为除第一个组合以外的所有变量的基础数值 x <- as.factor( letters[1:3] ) combn( x , 2 ) # [,1] [,2] [,3] #[1,] "a" "1" "2&quo

这在即将发布的R
3.1.0
中得到了修复。从变更日志:

combn(x,simplify=TRUE)
现在为因子输入提供因子结果
x
(以前的用户错误)。
有关


我只是注意到一件奇怪的事。为什么
combn
似乎会将
因子
变量取消分类为除第一个组合以外的所有变量的基础数值

x <- as.factor( letters[1:3] )

combn( x , 2 )
#     [,1] [,2] [,3]
#[1,] "a"  "1"  "2" 
#[2,] "b"  "3"  "3" 

可在OS X 10.7.5和Windows 7上的R64上复制。

正如Konrad所说,对因素的处理通常是奇怪的,或者至少是不一致的。在这种情况下,我认为这种行为很奇怪,足以构成一个bug。试试看,看看反应如何


由于结果是一个矩阵,并且没有因子矩阵类型,我认为正确的行为应该是将因子输入转换为函数开头附近的字符。

我认为这是由于
simplify
参数对
矩阵
的转换。如果你不使用它,你会得到:

combn( x , 2 , simplify=FALSE)
[[1]]
[1] a b
Levels: a b c

[[2]]
[1] a c
Levels: a b c

[[3]]
[1] b c
Levels: a b c

第一列正常的原因是
combn
的工作方式:第一列单独指定,然后使用
[从现有矩阵更改其他列。我也遇到了同样的问题。在combn命令中强制返回字符向量似乎可行:

 > combn(as.character(x),2)

     [,1] [,2] [,3]
[1,] "a"  "a"  "b" 
[2,] "b"  "c"  "c" 

在R中的*ss中,因子是一个巨大的痛苦。它们的处理方式在函数之间非常不一致,很难正确。另一个常见的奇怪行为是使用因子进行索引。给定
x,我将尝试提交一份错误报告,但这种想法让我害怕!谢谢。@SimonO101--听起来你基本上想要一行额外的错误如果(is.factor(r))r@JoshO'Brien,那么在
combn()
中的代码是
的。我会看看会发生什么。@SimonO101--恭喜。干得好。谢谢James,我会为
[@SimonO101祝你好运,这是一个原始函数,并引用有关内部函数的手册:“只有真正的R巫师才应该考虑使用这个函数”“哈,我认为这是为了围绕代码< >内部的< /代码>!我保证我只会阅读。我不会尝试和铸造任何咒语!或者更新R到V 3.1(预发布)。这固定在即将发布的版本中。从更改日志:<代码> COMBN(x,Simult= true)
现在为因子输入
x
(以前的用户错误)提供因子结果。与
m <- matrix(x,3,3)
m[,2] <- sample(x)
m
     [,1] [,2] [,3]
[1,] "a"  "1"  "a" 
[2,] "b"  "3"  "b" 
[3,] "c"  "2"  "c" 
 > combn(as.character(x),2)

     [,1] [,2] [,3]
[1,] "a"  "a"  "b" 
[2,] "b"  "c"  "c"