簡體   English   中英

R重新編碼變量 - 意外的INCOMPLETE_STRING

[英]R recode variable - unexpected INCOMPLETE_STRING

我試圖在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的水平,恰好就是你試圖重新編碼它們的方式。

recode似乎解釋了:表示一系列值,即使它在一個字符串中,並且:被解釋為過早地終止該字符串。 例如:

x = c("a","b","c")
recode(x, "'a'=1; 'b'=2; 'c'=3;")
[1] 1 2 3

x = c("a:d","b","c")
recode(x, "'a:d'=1; 'b'=2; 'c'=3;")
Error in parse(text = range[[1]][1]) : 
  <text>:1:1: unexpected INCOMPLETE_STRING
1: 'a
    ^

在每個例子中,我都試過字符串終止於:,導致錯誤。

任何處於類似位置但使用字符串而不是因子的人都應該能夠使用gsub從數據中刪除冒號。

napier_captureComplexityy <- gsub(":","",napier$a_SpatialConnectivity)

recode字符串中省略冒號,它應該是好的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM