我试图重新编码R中的因子变量,并使用以下代码:

library(car)
napier_captureComplexity=recode(napier$a_SpatialConnectivity,"'1 - Very simple and clear:     no diagrams, single sheets'=1;'2 - Reasonably simple: some simple diagrams or second sheets'=2;'3 - Reasonably complex: multiple diagrams or sheets but can be followed'=3;'4 - Moderately complex: multiple diagrams and sheets'=4;'5 - Very complex'=5;",as.factor.result=FALSE)


并得到以下错误信息:

Error in parse(text = range[[1]][1]) : <text>:1:1: unexpected INCOMPLETE_STRING 1: '4 - Moderately complex


数字4下方的^

我不确定是什么原因造成的,我想知道:通过代码,但我没有使用c(),并且代码在数据集中具有相似字符串值的其他因素上也能很好地执行。

任何帮助表示赞赏!

最佳答案

实际上是因为您的说明中有“:”。此函数使用一些奇怪的evalstrsplit语句来工作。最终将其拆分为“:”,因为这是其语法中的特殊代码,并且似乎没有办法对其进行转义。

但是我假设napier$a_SpatialConnectivity是给定水平的一个因素?您可以通过在factor()调用中显式设置级别来重新编码变量。

mylevels <- c("1 - Very simple and clear:     no diagrams, single sheets",
  "2 - Reasonably simple: some simple diagrams or second sheets",
  "3 - Reasonably complex: multiple diagrams or sheets but can be followed",
  "4 - Moderately complex: multiple diagrams and sheets",
  "5 - Very complex")

napier_captureComplexity <- as.numeric(factor(napier$a_SpatialConnectivity, levels=mylevels))


这将对级别1:5进行排序,而这恰好是您尝试重新编码它们的方式。

关于r - R重新编码变量-意外的INCOMPLETE_STRING,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24255402/

10-12 19:55