Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.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,我有一个因子向量: yoyo如果您只想将向量的类从因子更改为数值(正如我想您所问的)一个简单的as.numeric或c就足够了。如果您想要以某种方式表示相关间隔的数值(您的因子向量很可能是cut函数的输出),您应该指定所需的值(因为级别指定的是范围,而不是单个值)。我提出了一种显示每个间隔平均值的方法。例如,将[0,1)值替换为0.5 require(stringr) colMeans(matrix(as.numeric(simplify2array(str_extract_al

我有一个因子向量:


yoyo如果您只想将向量的类从
因子
更改为
数值
(正如我想您所问的)一个简单的
as.numeric
c
就足够了。如果您想要以某种方式表示相关间隔的数值(您的因子向量很可能是
cut
函数的输出),您应该指定所需的值(因为级别指定的是范围,而不是单个值)。我提出了一种显示每个间隔平均值的方法。例如,将
[0,1)
值替换为0.5

    require(stringr)
    colMeans(matrix(as.numeric(simplify2array(str_extract_all(levels(yoyo),"[0-9]+"))),nrow=2))[yoyo]

要获得级别的下限和上限,可以使用

sapply(strsplit(as.character(yoyo), split=','), 
       function(x) as.numeric(gsub(x, pattern="[^0-9]+", replacement="")))

要获得下限和上限,另一种方法是:

library(stringr)
read.table(text=str_trim(gsub("[^0-9]+", " ", yoyo)),sep="")

如果您所追求的是用于创建yoyo的第一个
c(1L,3L,…)
序列, 然后(编辑)
as.numeric(yoyo)
就是所需的全部

编辑-我在下面艰难地做着。不要做我做过的事

newstring <- rep(NA,length(yoyo))
(for j in 1:(length(levels(yoyo))) {
   indx <- which((yoyo)==levels(yoyo)[j])
   newstring[c(indx)] <- j
}

newstring Just
as.numeric(yoyo)
?@nicola,不,不,不,这是一个典型的错误。因子是数字的,但用户几乎总是想要因子的标签,因此必须以.numeric(as.character(Factors))的形式执行
as.numeric(as.character(Factors))
。这在R-FAQ中。你在说什么?他想强制使用数字,似乎他不想要标签。另外,你的行只生成NA。你有
cut
的结果。每个条目/级别有两个值,例如,
“[0,1)”
,你到底想把什么转换成
数字
?我注意到没有人,甚至回答者,显示出结果是什么或应该是什么。期望的结果是什么?如果使用
剪切
标签
参数而不是跳过这些环,会更好。为什么?这与
作为数字有什么不同(yoyo)
完全相同(newstring,as.integer(yoyo))
返回
TRUE
@Shadow,我的道歉——你是对的。我被卷入了
as.numeric(levels)
的变量漩涡中,没有注意。
newstring <- rep(NA,length(yoyo))
(for j in 1:(length(levels(yoyo))) {
   indx <- which((yoyo)==levels(yoyo)[j])
   newstring[c(indx)] <- j
}