Как читать логические данные из файла в R

Я сгенерировал файл, который содержит логическое значение «ИСТИНА» или «ЛОЖЬ» в каждой строке. Теперь я хотел бы прочитать логические данные из файла в R. Однако данные, которые считываются, имеют режим «символ», а не логические значения. Мне было интересно, как читать данные как логические значения из файла.

Мой код R

cat(FALSE,"\n", file="1.txt", append=FALSE);
for (i in 2:5) cat(TRUE,"\n",file="1.txt", append=TRUE);
a=scan(file="1.txt", what="logical")

Выход:

> mode(a)
[1] "character"
> mode(a[1])
[1] "character"
> a[1]
[1] "FALSE"

Я хочу, чтобы [1] было логическим значением.

Спасибо и всего наилучшего!

Ответы на вопрос(2)

a=='TRUE'->a.

 mbq24 сент. 2010 г., 12:15
Это хорошо работает при работе с нестандартными типами логических данных; сказать'Yes'/'No', 7/-5 или просто'true'/'false'.
Решение Вопроса

Ах, теперь я понял. Вы должны прочитать?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"

НТН

 Marek24 сент. 2010 г., 12:59
@mbq Твой путь - лучший путь :)
 mbq24 сент. 2010 г., 12:13
Или старый добрыйlogical(0)... Я думаю, что это наиболее логичный вариант.
 Marek24 сент. 2010 г., 11:54
Какwhat можно использоватьNA причинаtypeof(NA) являетсяlogical, И для других типов специальныхNAможно использовать:NA_integer_, NA_real_, NA_character_, NA_complex_.
 Gavin Simpson24 сент. 2010 г., 17:45
@mbq: спасибо за это предложение. Я отредактировал свой ответ, чтобы включить упоминание об этом какlogical() (сохраняет набрав один символ ;-)

Ваш ответ на вопрос