Импорт текстового файла в виде отдельной символьной строки
Как импортировать простой текстовый файл в виде отдельной символьной строки в R? Я думаю, что у этого, вероятно, будет очень простой ответ, но когда я пробовал это сегодня, я обнаружил, что не могу найти функцию для этого.
Например, предположим, что у меня есть файл foo.txt
с чем-то, что я хочу textmine.
Я попробовал:
- R: преобразовать строку с разделителями в переменные
- Элементарно означает над списком матриц
- R создать идентификатор внутри группы
- Свернуть текст по группе в кадре данных
- Создание системы Prompt / Answer для ввода данных в R
scan("foo.txt", what="character", sep=NULL)
но это все равно вернуло вектор. Я немного работал с ним:
paste(scan("foo.txt", what="character", sep=" "),collapse=" ")
но это довольно уродливое решение, которое, вероятно, тоже нестабильно.
- Как изменить строку в R
- R Ошибка в операторе x $ ed: $ недействительна для атомных векторов
- Как создать пример данных из частных данных (заменяя имена переменных и уровни владельцами неинформативных мест)?
- Как определить, есть ли у вас интернет-соединение в R
- Прочтите файл csv в R со столбцом валюты как числовой
- Интерпретация "имеет длину> 1" предупреждение от функции `if`
- Какой самый полезный трюк?
- Найдите, сколько раз повторяющиеся строки повторяются в кадре данных R
Вот вариант решения от @JoshuaUlrich, который использует правильный размер вместо жестко кодированного размера:
fileName <- 'foo.txt' readChar(fileName, file.info(fileName)$size)
Обратите внимание, что readChar выделяет пространство для количества readChar(fileName, .Machine$integer.max)
вами байтов, поэтому readChar(fileName, .Machine$integer.max)
не работает хорошо ...
В случае, если кто-то еще смотрит на этот вопрос через 3 года, в readr-файле Хэдли Уикхэма есть удобная read_file()
, которая сделает это за вас.
install.packages("readr") # you only need to do this one time on your system library(readr) mystring <- read_file("path/to/myfile.txt")
Я бы использовал следующее. Он должен работать отлично, и не кажется уродливым, по крайней мере для меня:
singleString <- paste(readLines("foo.txt"), collapse=" ")
Как насчет:
string <- readChar("foo.txt",nchars=1e6)
У пакета readr есть функция, которая сделает все для вас.
install.packages("readr") # you only need to do this one time on your system library(readr) mystring <- read_file("path/to/myfile.txt")
Это заменяет версию в пакете stringr.
Жаль, что решение Шарона больше нельзя использовать. Я добавил решение Josh O’Brien с модификацией asieira в файл .Rprofile:
read.text = function(pathname) { return (paste(readLines(pathname), collapse="\n")) }
и используйте его так: txt = read.text('path/to/my/file.txt')
. Я не смог воспроизвести поиск writeLines(txt)
‘s (28 окт. 14), а writeLines(txt)
показал содержимое file.txt
. Кроме того, после write(txt, '/tmp/out')
команда diff /tmp/out path/to/my/file.txt
сообщала о различиях.
readChar не обладает большой гибкостью, поэтому я объединил ваши решения (readLines и paste).
Я также добавил пробел между каждой строкой:
con <- file("/Users/YourtextFile.txt", "r", blocking = FALSE) singleString <- readLines(con) # empty singleString <- paste(singleString, sep = " ", collapse = " ") close(con)