1

検討中の動作を示すには、次のようにします。

sst = scan(text='44 45 46 47 48 49 50\n51 52 53 54 55 56 57',
           what=list(age='numeric',
                     weight='numeric', 
                     oxygen='numeric', 
                     runTime='numeric', 
                     restPulse='numeric', 
                     runPulse='numeric', 
                     maxPulse='numeric'))

これにより (ドキュメントに基づいて)、7 つの数値列のリストが得られると思います。実際に返されるのは次のとおりです。

R> str(sst)
List of 7
 $ age      : chr [1:2] "44" "51"
 $ weight   : chr [1:2] "45" "52"
 $ oxygen   : chr [1:2] "46" "53"
 $ runTime  : chr [1:2] "47" "54"
 $ restPulse: chr [1:2] "48" "55"
 $ runPulse : chr [1:2] "49" "56"
 $ maxPulse : chr [1:2] "50" "57"

これにより、正しい答えが得られます。

sst = scan(text='44 45 46 47 48 49 50 51 52 53 54 55 56 57',
           what=list(age=double(),
                     weight=double(), 
                     oxygen=double(), 
                     runTime=double(), 
                     restPulse=double(), 
                     runPulse=double(), 
                     maxPulse=double()))

しかし、なぜ最初のステートメントが失敗するのでしょうか? scan私が見逃した微妙な点はありますか?

4

1 に答える 1

2

引数whatは、型名ではなく、目的の型のオブジェクトによって提供する必要があります。

参照?scan:

読み取るデータの型を与えるものの型。

そして例:

scan("ex.data", what = list("","","")

それぞれ""が空の文字列を表し、目的の型が文字列であることを示します。

あなたの場合、たとえば次のようなことができます:

sst = scan(text='44 45 46 47 48 49 50\n51 52 53 54 55 56 57',
       what=list(age=0,
                 weight=0, 
                 oxygen=0, 
                 runTime=0, 
                 restPulse=0, 
                 runPulse=0, 
                 maxPulse=0))

str(sst)
List of 7
 $ age      : num [1:2] 44 51
 $ weight   : num [1:2] 45 52
 $ oxygen   : num [1:2] 46 53
 $ runTime  : num [1:2] 47 54
 $ restPulse: num [1:2] 48 55
 $ runPulse : num [1:2] 49 56
 $ maxPulse : num [1:2] 50 57

または、試した解決策も同様に機能します。

于 2013-09-11T09:20:17.653 に答える