Ах, теперь я понял. Вы должны очень внимательно прочитать ?scan
, чтобы понять, что вы сделали не то, что scan()
хочет для аргумента what
. Я пропустил это в первый раз, а потом удивился, почему ваш код не работает. Это ключевой раздел:
what: the type of ‘what’ gives the type of data to be read. The
supported types are ‘logical’, ‘integer’, ‘numeric’,
‘complex’, ‘character’, ‘raw’ and ‘list’.
и ключевая фраза введите . Поэтому вам нужно передать объект правильного типа в аргумент what
.
В вашем примере:
> typeof("logical")
[1] "character"
То есть scan()
читает объект типа "character"
.
Решение состоит в том, чтобы просто использовать what = TRUE
, или что-то еще, что R считает логичным (см. Комментарии к этому ответу), вместо
> typeof(TRUE)
[1] "logical"
> ## or
> typeof(logical())
[1] "logical"
## So now read in with what = TRUE
> a <- scan(file="1.txt", what = TRUE)
Read 5 items
> class(a)
[1] "logical"
> typeof(a)
[1] "logical"
read.table()
более логично в том, как вы говорите, каковы данные для чтения. Эквивалентный вызов будет:
> b <- read.table("1.txt", colClasses = "logical")[,]
> class(b)
[1] "logical"
> typeof(b)
[1] "logical"
НТН