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'))

我希望这(基于文档)给我一个包含七个数字列的列表。它实际上返回的是:

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 回答