7

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() を使用しておらず、データセット内の同様の文字列値を持つ他の要因でコードが正常に実行されます。

どんな助けでも大歓迎です!

4

3 に答える 3

5

それは実際には、説明の「:」が原因です。この関数は、いくつかの奇妙なevalandstrsplitステートメントを使用して動作します。これは構文の特殊なコードであり、それをエスケープする方法がないように見えるため、最終的に「:」で分割されます。

しかし、私は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 に並べ替えられます。

于 2014-06-17T04:07:52.787 に答える
2

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
    ^

私が試したすべての例で、文字列が:で終了し、エラーが発生しました。

于 2014-06-17T04:07:43.317 に答える