R: Как записать data.frame, чтобы я мог вставить его в SO, чтобы другие могли прочитать?

У меня есть большой data.frame, отображающий некоторые странные свойства при нанесении на график. Я хотел бы задать вопрос об этом в Stackoverflow, для этого я хотел бы записать data.frame в форме, которую я могу вставить в SO, и кто-то другой может легко запустить его и вернуть обратно в data.frame снова. Есть ли простой способ добиться этого? Кроме того, если он действительно длинный, следует ли мне использовать контейнер для вставки вместо того, чтобы вставлять его прямо здесь?


person John    schedule 13.04.2010    source источник


Ответы (4)


Чтобы напрямую ответить на ваш вопрос, проще всего было бы использовать summary() или head() для отображения информации о фрейме данных. Я бы посоветовал не вставлять фактические данные в вопрос SO, а предоставить общедоступную ссылку на данные, чтобы сообщество могло поиграть с ними. Если вы этого не видели, служба box.net предоставляет много свободного места для совместной работы в Интернете.

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

person DrewConway    schedule 13.04.2010

Во-первых, идеи Дрю очень хороши.

Вдобавок, если вы уменьшите объем данных и выделите «странную» часть, используйте dput(). Это самый простой способ позволить другим загрузить его. Хотя сначала вам нужно сократить объем данных до разумного.

В противном случае опубликуйте его как файл CSV в месте, доступном через HTTP, и люди смогут читать его напрямую с помощью read.csv. Хотя неразумно просить людей помочь вам с очень большим набором данных.

Наконец, посмотрите ответы на этот вопрос: Как загрузить примеры наборов данных в R?

person Shane    schedule 14.04.2010
comment
Я бы предложил разместить файл rdata где-нибудь по сравнению с csv, просто чтобы убедиться, что такие вещи, как даты, факторы и т. Д., Идентичны и представляют то, что OP имеет в своей системе. - person A5C1D2H2I1M1N2O1R2T1; 27.07.2012

Это отличный вопрос.

Вот моя попытка ответа - в виде рекомендаций, как лучше задавать вопросы без представления данных, сопровождающих вопрос. Я, вероятно, нарушил каждое из приведенных ниже предложений, но, по крайней мере, мне есть на что ссылаться в будущем, и, возможно, это полезно и для других.

Во-первых, я подозреваю, что любой, кто задает вопрос, предпочитает ответ

  • с достаточной абстракцией, чтобы в будущем они могли решать общий класс проблем, к которому принадлежит текущая проблема; и

  • с достаточным практическим руководством (обычно это означает реальный код R), чтобы решить проблему, которая стоит перед нами.

Опять же: абстракция в вашем вопросе (обычно) приводит к абстракции в ответе, что означает более полезный ответ, но также увеличивает вероятность того, что вы действительно получите приемлемый ответ - маловероятно, что сообщество видело этот точный набор данных раньше. ; гораздо более вероятно, что кто-то здесь распознает образец. Но закономерность может быть скрыта из-за слишком большого количества данных.

Во-вторых, количество данных, необходимых для адекватного объяснения вопроса, на самом деле не имеет значения - важно то, сколько времени потребуется людям, пытающимся ответить на вопрос, чтобы получить эти данные в своей среде R. В базовом распределении R представлены наборы данных, состоящие из 50 000 строк - не имеет значения, потому что я могу получить данные в R за несколько нажатий клавиш. Более того, если вы можете обратиться к одному из этих наборов данных, вам не придется вырезать и вставлять что-то внутри окна вопроса. Напротив, я действительно стараюсь не заставлять людей очищать даже несколько строк данных со страницы SO, чтобы они могли правильно понять мой вопрос (кроме Дирка, он производит вычисления в своей голове).

В-третьих, вырезать и вставить всю ширину набора данных в вопросе (всех столбцов), если это не является абсолютно необходимым, просто лениво. Данные редко заменяют краткое описание проблемы. Я бы предпочел, чтобы ОП потратили минуту или две и урезали свой фактический набор данных, чтобы они не предоставляли больше данных, чем на самом деле требуется для иллюстрации вопроса.

В-четвертых, если данные могут быть "предоставлены" с помощью формулы или алгоритма, просто укажите это. Например, если вопрос относится к случайному блужданию, нам не нужны данные, просто скажите «случайное блуждание», и почти каждый здесь сможет сгенерировать данные в короткой строке кода.

person doug    schedule 13.04.2010
comment
Если вы считаете, что это отличный вопрос, вы должны проголосовать за него. Просто говорю :) - person frankc; 14.04.2010

dump хорошо работает, когда фрейм данных не очень большой.

person Jonathan Chang    schedule 13.04.2010