0

サブセットを使用して列の特定の値に一致する行を送信しようとしていますが、別のヘッダーではなく、定義した特定のヘッダーを認識する際に問題が発生しています。

foo.csv は次のとおりです。

    ,3ZSJ_ALA_A_142,ED
    1,0,0.249
    2,10,0.379
    3,20,0.542

r コードの例:

    T1 = read.csv('foo.csv', header=T)
    foo <- subset(T1, 3ZSJ_ALA_A_142 == '10')
    Error: unexpected symbol in "foo <- subset(T1, 3ZSJ_ALA_A_142"
    Execution halted

また、3ZSJ_ALA_A_142 を括弧に入れようとしましたが、出力 lis が不適切です。10 の行が表示されるはずですが、次のようになります。

    [1] X               X3ZSJ_ALA_A_142 ED  
    <0 rows> (or 0-length row.names)

r コードで 3ZSJ_ALA_A_142 の代わりに ED を実行すると、次のようになります。

      X X3ZSJ_ALA_A_142    ED 
    2 2              10 0.379

不適切な関数を使用していますか、それとも構文がすべてごちゃごちゃしていますか? どんな点でも大歓迎です、ありがとう。

4

1 に答える 1

2

などの数字で始まる名前3ZSJ_ALA_A_142は、構文的に有効ではありません。

呼び出すと、名前の構文の妥当性をチェックし、必要に応じて調整するread.csv引数があります (デフォルトはcheck.namescheck.names = TRUE)

これを使用して構文的に有効な名前に変換すると、(通常)X数字で始まる名前の先頭に が追加されます。

したがって、次のように動作するはずです。

foo <- subset(T1, X3ZSJ_ALA_A_142 == '10')

名前を変換したくない場合は、egをcheck.names = FALSE使用して非構文名を参照してください。backticks`

 T2 = read.csv('foo.csv', header=TRUE, check.names = FALSE )
    foo <- subset(T1, `3ZSJ_ALA_A_142` == '10')

一部の関数が適切に処理できない可能性があるため、非構文名の使用に注意してください。

于 2013-02-06T01:08:28.443 に答える