Подтвердить что ты не робот

Как скопировать и вставить данные в R из буфера обмена?

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

4b9b3361

Ответ 1

Предполагая, что у вас есть данные в буфере обмена Windows (например, скопированные данные из Excel), чтобы поместить эти данные в переменную с именем copdat в R:

copdat <- read.delim("clipboard")

Если вы хотите скопировать данные из R-переменной с именем rdat в буфер обмена Windows (например, для копирования в Excel), используйте:

write.table(rdat, "clipboard", sep="\t", row.names=FALSE, col.names=FALSE)

Ответ 2

Имя и точное соединение, используемые для "буфера обмена", различаются в зависимости от ОС.

для Windows:

x <- read.delim("clipboard")

для Mac OS:

x <- read.delim(pipe("pbpaste"))

Это работает, потому что read.delim, как и многие функции, будет принимать диапазон типов соединений за пределами только файла. Для Mac мы фактически используем трубку. help(connections) довольно информативен.

Пакет psych имеет функцию read.clipboard(), что делает это немного легче, тестируя вашу ОС.

Как уже отмечалось другими, вы также можете писать в буфер обмена. Обычно существует ограничение на 32 К, которое можно повысить, используя добавление дефиса и числа после буфера обмена, например, при передаче данных до 256 К с объекта df с помощью:

write.table(df, "clipboard-256")

Ответ 3

Если вы хотите читать табличные данные из электронной таблицы, я использовал следующий код

read.table(file = "clipboard", sep = "\t", header=TRUE)

Ответ 4

Есть плагин R package/RStudio под названием datapasta который делает это очень аккуратно - см. Https://CRAN.R-project.org/package=datapasta. Изображение ниже демонстрирует его простоту

enter image description here

Ответ 5

Введите data = as.numeric(read.table(text = "125 140 200 200 190 ", sep = " ")), где ваши номера идут между кавычками text = " ".

Ответ 6

Мне нужно было скопировать композитный url в Windows , а read.table() выводил вектор символов с кавычками вокруг моего URL. Вместо этого я использовал writeClipboard(URL,format=1) из пакета , и он сделал трюк.

Ответ 7

Посмотрите документацию для ?file, раздел Clipboard:

Clipboard файл может использоваться с описанием = "буфер обмена" только в режиме "r". Это читает первичный выбор X11 (см. http://standards.freedesktop.org/clipboards-spec/clipboards-latest.txt), который также можно указать как "X11_primary", а вторичный выбор - "X11_secondary", В большинстве систем выбор буфера обмена (который используется "Копировать из меню" Правка ") можно указать как" X11_clipboard ". Когда буфер открыт для чтения, содержимое немедленно копируется во внутреннее хранилище в соединении. Пользователи Unix, желающие писать в один из вариантов X11, могут это сделать через xclip ( http://sourceforge.net/projects/xclip/) или xsel ( http://www.vergenet.net/~conrad/software/xsel/), например, по каналу (" xclip -i "," w ") для первичного выбора. Пользователи macOS могут использовать pipe (" pbpaste ") и pipe (" pbcopy "," w") для чтения и записи в этот системный буфер обмена.

так, например, с помощью magrittr:

base::file(description='clipboard') %>% readLines

Ответ 8

Метод, который я протестировал и работает как в Windows, так и в MacOS, - это использовать textConnection() с read.table().

Сначала вставьте ваши данные в переменную в виде текста:

density_water_str <-   "T_/K Density_g/mL D2O
273 0.999841 1.10469
274 0.999900 NA
275 0.999941 NA
276 0.999965 NA
277 0.999973 1.1057
278 0.999965 1.10562
279 0.999941 NA
280 0.999902 NA
281 0.999849 NA
282 0.999781 NA
281 0.999700 NA"

Затем прочитайте текстовую строку, используя read.table()

density_water <- read.table(textConnection(
                                object = density_water_str), 
                            header = TRUE, 
                            sep = "", 
                            stringsAsFactors = FALSE)

Не тестировался на Linux или других системах Unix, но я считаю, что он должен работать кроссплатформенно.

Ответ 9

Чтобы дополнить ответ "wjchulme", используя "datapasta", если вы хотите установить/интерпретировать вывод из datapasta с помощью R, чтобы установить переменную с содержимым буфера обмена, один оператор может сделать что-то вроде:

read.from.clipboard <- function() {
  mydata<-eval(parse(text=paste(capture.output(datapasta::tribble_paste(output_context = datapasta::console_context()), file=NULL), collapse="")))
  str(mydata); View(capture.output(str(mydata), file=NULL)) #Check guessed format is ok
  return(mydata)
}
mydata<-read.from.clipboard() #Tibble format
mydata<-as.data.frame(read.from.clipboard()) #Data.frame format

Ответ 10

Я использую Мохаве 10,14

При вводе команды: X<-read.delim("clipboard") я обнаружил следующее предупреждение в версии Rstudio версии 1.1.463 для Mac:

Error in file(file, "rt") : cannot open the connection In addition: Warning message: In 
file(file, "rt") : cannot open file 'pbpaste': No such file or directory 

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

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

Пожалуйста, следуйте всем нижеприведенным инструкциям, поскольку я не уверен, какая конкретная установка сделала волшебство (загрузка не обязательно должна быть в этом конкретном порядке):

  1. Загрузите R-3.6.1.pkg из https://cran.r-project.org/bin/macosx/

  2. Загрузите Rstudio с https://www.rstudio.com/products/rstudio/download/#download

  3. Установите пакет rcmdr в Rstudio

    Перейдите в "tools"> "Install Packages"> type rcmdr

  4. Загрузите XQuartz 'X11' с сайта https://www.xquartz.org/

  5. Загрузите все пакеты

    Перейдите на https://cran.r-project.org/bin/macosx/tools/ и загрузите следующие инструменты:

    • clang-8.0.0.pkg (OS X 10. 11+, подписанный, 64-разрядный)
    • gfortran-4.2.3.pkg (OS X 10. 5+, подписанный, 64-разрядный драйвер)
    • tcltk-8.5.5-x11.pkg (OS X 10. 5+, подписано)
  6. Теперь вернитесь в Rstudio и введите:

    X<-read.delim("clipboard") 
    X 
    

    Скопированные данные в Excel теперь будут импортироваться в консоль Rstudio.

Надеюсь, эта информация окажется полезной.