Как преобразовать строку "Inf" в текстовом файле в числовой - PullRequest
0 голосов
/ 10 мая 2018

Я знаю, что люди спрашивали что-то подобное здесь, но я пока не могу найти решение:

Мне нужно создать такой вектор:

c <- (1, 2, Inf, 2, -Inf)

, читая содержимое изfile

Однако я не знаю, как анализировать Inf и -Inf из текста в элемент вектора.

Может кто-нибудь помочь?Я гибок с форматом текстового файла, что бы ни работало.

Ответы [ 2 ]

0 голосов
/ 11 мая 2018

Коротким ответом может быть то, что Inf является зарезервированным словом на языке R.Следовательно, вам не нужно делать ничего особенного для этого.Просто прочитайте файл как обычно, и Inf или -Inf будут автоматически прочитаны как numeric.

Давайте рассмотрим несколько примеров и рассмотрим их подробнее.

# Read form text containing multiple Inf and -Inf
df <- read.table(text =
"ID   Count   Name
1     Inf     A
2     -Inf    B
Inf   100     C
4     101     D",
header = TRUE, stringsAsFactors = FALSE)

#Verify the out of df
df
#    ID Count Name
# 1   1   Inf    A
# 2   2  -Inf    B
# 3 Inf   100    C
# 4   4   101    D

#Check for type of columns containing Inf and -Inf. Type is numeric.
str(df)
# 'data.frame': 4 obs. of  3 variables:
#   $ ID   : num  1 2 Inf 4
# $ Count: num  Inf -Inf 100 101
# $ Name : chr  "A" "B" "C" "D"

#Perform is.infinite checking. It comes TRUE as expected.
is.infinite(df$ID)
#[1] FALSE FALSE  TRUE FALSE


is.infinite(df$Count)
#[1]  TRUE  TRUE FALSE FALSE
0 голосов
/ 10 мая 2018

Чтобы преобразовать "Inf" в текстовом файле в Inf, число, просто оберните "Inf", произведение вашего чтения файла, в as.numeric("Inf"). Так что прочитайте файл как обычно, а затем бросьте весь вектор в as.numeric().

Например, используя fread() из data.table, если у вас есть текстовый файл, содержимое которого выглядит так:

1 2 Inf

И файл называется test.txt, вы бы сделали:

as.numeric(fread("test.txt"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...