R: загрузить таблицу R или CSV-файл с помощью команды textconnection

В предыдущем сообщении Преобразовать таблицу в матрицу по именам столбцов

Я хочу использовать тот же подход для таблицы csv или таблицы в R. Не могли бы вы научить меня, как изменить первую командную строку?

x <- read.table(textConnection(' models cores  time 4 1 0.000365 4 2 0.000259 4 3 0.000239 4 4 0.000220 8 1 0.000259 8 2 0.000249 8 3 0.000251 8 4 0.000258' ), header=TRUE)   

library(reshape) cast(x, models ~ cores)

Должен ли я использовать следующее для файла data.csv

x <- read.csv(textConnection("data.csv"), header=TRUE)

Должен ли я использовать следующее для таблицы R с именем xyz

x <- xyz(textConnection(xyz), header=TRUE)

Обязательно ли иметь textConnection для использования команды cast?

Спасибо.


person Catherine    schedule 11.04.2011    source источник
comment
Вы случайно не тот же человек, что и другая Кэтрин, живущая здесь, которая не принимает вопросы и публикует простые вопросы, не удосужившись прочитать руководства, которые мы тоже постоянно задаем ей?   -  person Gavin Simpson    schedule 11.04.2011
comment
С возвращением, Кэтрин. О, как мы по тебе соскучились.   -  person Andrie    schedule 11.04.2011
comment
Вы уверены, что xyz это стол? Скорее всего, это фрейм данных. Что говорит class(xyz)? Как вы думаете, почему xyz можно использовать как функцию? Если xyz уже в R, почему вы пытаетесь его прочитать? Возможно, это что-то, что вы сохранили ранее? Если второе, см. ?load.   -  person Gavin Simpson    schedule 11.04.2011


Ответы (1)


Несколько лет спустя...

read.table и его производные, такие как read.csv, теперь имеют аргумент text, поэтому вам больше не нужно возиться с textConnection напрямую.

read.table(text = "
x y z
1 1.9 'a'
2 0.6 'b'
", header = TRUE)

Основное использование для textConnection - это когда люди, которые задают вопросы по SO, просто выводят свои данные на экран, а не пишут код, чтобы позволить респондентам генерировать его самостоятельно. Например,

Бла-бла-бла, я застрял, вот мои данные, помогите, пожалуйста, omg
x y z
1 1,9 'a'
2 0,6 'b'
и т. д.

В этом случае вы можете скопировать текст с экрана и обернуть его вызовом textConnection, например так:

the_data <- read.table(tc <- textConnection("x y z
1 1.9 'a'
2 0.6 'b'"), header = TRUE); close(tc)

Гораздо приятнее, когда спрашивающие предоставляют код, подобный этому:

the_data <- data.frame(x = 1:2, b = c(2.9, 0.6), c = letters[1:2])

Когда вы используете свои собственные данные, вам не нужно использовать textConnection.
my_data <- read.csv("my data file.csv") должно быть достаточно.

person Richie Cotton    schedule 11.04.2011
comment
Я думаю, вам не хватает примечания для чтения ?read.csv и ссылки на руководство по импорту/экспорту данных R [ cran.r-project.org/doc/manuals/R-data.html ] где-то там :-) - person Gavin Simpson; 11.04.2011