R - труба ("pbcopy") колонны, не выравнивающиеся с оклейкой - PullRequest
2 голосов
/ 03 февраля 2012

В качестве продолжения вопроса , который я написал несколько дней назад , я наконец понял, как скопировать в буфер обмена для вставки в другие приложения (читай: Excel).

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

Данные (взяты из примера с текущими данными, на который я случайно смотрел):

data <- read.csv("http://datasets.flowingdata.com/post-data.txt")

Функция копирования:

write.table(file = pipe("pbcopy"), data, sep = "\t")

При загрузке данные выглядятнапример:

    id  views comments               category
1 5019 148896       28 Artistic Visualization
2 1416  81374       26          Visualization
3 1416  81374       26               Featured
4 3485  80819       37               Featured
5 3485  80819       37                Mapping
6 3485  80819       37           Data Sources

Существует номер строки без имени переменной столбца (1, 2, 3, 4, ...)

Используя функцию read.table(pipe("pbpaste")), он будетзагрузить обратно в R отлично.

Однако, когда я вставляю его в Excel или TextEdit, имя столбца для второй переменной будет в первом слоте имени столбца переменной, например:

id  views   comments    category    
1   5019    148896      28          Artistic Visualization
2   1416    81374       26          Visualization
3   1416    81374       26          Featured
4   3485    80819       37          Featured
5   3485    80819       37          Mapping
6   3485    80819       37          Data Sources 

Который оставляет в конце столбца без имени столбца.

Есть ли способ убедиться, что данные, скопированные в clipboard, выровнены и помечены правильно?

Ответы [ 2 ]

4 голосов
/ 03 февраля 2012

Номера строк не имеют названия столбца в R data.frame. Их не было в исходном наборе данных, но они помещаются в вывод в буфер обмена, если вы не подавите его. По умолчанию для этого параметра установлено значение TRUE, но вы можете переопределить его. Если вам нужен такой столбец, как именованный столбец, вам нужно его создать. Попробуйте это при отправке в excel.

df$rownums <- rownames(df)
edf <- df[ c( length(df), 1:(length(df)-1))]   # to get the rownums/rownames first
write.table(file = pipe("pbcopy"), edf, row.names=FALSE, sep = "\t")
1 голос
/ 03 февраля 2012

Вы можете просто добавить аргумент col.names=NA к вашему вызову write.table(). Это приводит к добавлению пустой строки символов (пустого имени столбца) в строку заголовка первого столбца.

write.table(file = pipe("pbcopy"), data, sep = "\t", col.names=NA)

Чтобы увидеть разницу, сравните эти два вызова функций:

write.table(data[1:2,], sep="\t")
# "id"    "views" "comments"      "category"
# "1"     5019    148896  28      "Artistic Visualization"
# "2"     1416    81374   26      "Visualization"

write.table(data[1:2,], sep="\t", col.names=NA)
# ""      "id"    "views" "comments"      "category"
# "1"     5019    148896  28      "Artistic Visualization"
# "2"     1416    81374   26      "Visualization"
...