R | readLine | читать файл, содержащий только цифры (разделенные пробелами) - PullRequest
0 голосов
/ 05 апреля 2020

Я читаю файл, в котором в каждой строке есть числа, разделенные пробелами.

Я использую следующую команду

f <- file("stdin")

on.exit(close(f))

L <- strsplit(readLines(f), "\n")

T1 <- as.numeric(unlist(strsplit(L[[1]], split = "\\s"))) # to read line containing numbers separated by spaces.

Есть ли какой-либо оптимальный способ обойтись без использования каких-либо внешних библиотеки?

Ответы [ 2 ]

1 голос
/ 05 апреля 2020

Если содержимое файла соответствует опубликованному описанию, scan будет читать числа автоматически.

f <- file('test.txt', open = 'rt')
x <- scan(f)

Читать 9 пунктов

close(f)

x
#[1] 1 2 3 4 5 6 7 8 9

Файл test.txt.

Файл представляет собой текстовый файл Ubuntu 19.10, строки заканчиваются на '\n'. Числа разделены пробелами, а не обязательно одним пробелом.

1 2 3 4
5 6 
7  8 9

Edit

Обратите внимание, что это также работает с не целыми числами. Я отредактировал файл выше, чтобы включить число 3.14.

f <- file('test2.txt', open = 'rt')
x <- scan(f)

Чтение 9 пунктов

close(f)

x
#[1] 1.00 2.00 3.14 4.00 5.00 6.00 7.00 8.00 9.00

Файл test2.txt.

1 2 3.14 4
5 6 
7  8 9
1 голос
/ 05 апреля 2020

Тривиально, если каждая строка в вашем входном CSV содержит одинаковое количество терминов, тогда вы можете просто использовать read.csv:

f <- "path/to/your/input.csv"
T1 <- read.csv(file=f, sep=" ")  # using space as a separator

Если каждая строка может содержать переменное число чисел, то ваш текущий подход приемлем.

...