Получение имени файла из буфера обмена в R

В R можно ли получить полный путь и имя файла (в Windows) файла, скопированного в буфер обмена?

Предыстория такова: у меня есть несколько больших файлов Excel, содержащих данные, которые я хотел бы обработать R. Файловая система относительно неструктурирована, поэтому программное получение путей/имен этих файлов на самом деле не является вариантом. Я также не хочу открывать файлы Excel для копирования данных в R, потому что открытие больших файлов Excel занимает много времени. Поэтому я ищу вариант, в котором я могу перейти к файлу с помощью проводника, скопировать файл в буфер обмена, а затем прочитать содержимое файла в R, который я мог бы настроить, если смогу извлечь имя файла и путь. .

Оба utils::readClipboard() и clipr::read_clip() возвращают NULL, если файл скопирован в буфер обмена.


4
66
2

Ответы:

Пакет utils охватывает это

Прочитайте содержимое буфера обмена
file_path <- utils::readClipboard()
Распечатать путь к файлу
print(file_path)

здесь много интересных вариантов для игр, получайте удовольствие :) https://rdrr.io/r/utils/clipboard.html


Решено

Развивая комментарии Конрада, вы можете получить путь к файлу из файла, скопированного в буфер обмена, используя readClipboard() с форматами 49158 (короткое имя файла) и 49159 (длинное имя файла). Например, после копирования исполняемого файла R в буфер обмена:

# Short filename
readClipboard(format = "49158", raw = TRUE) |> 
  rawToChar()
    
[1] "C:\\PROGRA~1\\R\\R-44~1.1\\bin\\x64\\R.exe"

# Long filename
readClipboard(format = "49159", raw = TRUE) |> 
    rawToChar(multiple = TRUE) |> 
    paste0(collapse = "")

[1] "C:\\Program Files\\R\\R-4.4.1\\bin\\x64\\R.exe"