证明正在考虑的行为:
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
的一些微妙之处吗?
答案 0 :(得分: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
或者您尝试的解决方案也适用。