在R语言中,使用 Clipr 读写剪贴板
clipr 是一个简单的实用程序,可以读取和写入 Windows、OS X 和类 Unix 系统(需要 xclip 或 xsel)的系统剪贴板。其中包含read_clip()
、write_clip()
和read_clip_tbl()
三个关键函数。
https://www.rdocumentation.org/packages/clipr/versions/0.8.0
1. 安装
从 CRAN 安装:
install.packages("clipr")
或尝试开发版本:
remotes::install_github("mdlincoln/clipr")
2. 使用
加载 clipr
库:
library("clipr")
#> 欢迎使用 clipr。请参阅 ?write_clip 了解在 R 中写入剪贴板的建议。
开始前:检查系统剪贴板是否可用
clipr_available()
2.1 使用read_clip()
读取剪贴板内容:
cb <- read_clip()
2.2 使用write_clip()
将文本写入剪贴板:
res <- write_clip(c("Text", "for", "clipboard"))
res
#> [1] "Text" "for" "clipboard"
将字符串写入剪贴板时,指定 return_new = TRUE
。使用换行符进行折叠,除非另有指定。
# 默认写入剪贴板时以换行符分隔(可以直接复制到Execl表格)
cb <- write_clip(c("Text", "for", "clipboard"), return_new = TRUE)
cb
#> [1] "Text\nfor\nclipboard"
# 指定写入剪贴板时以逗号分隔(可以直接生成.csv表格)
cb <- write_clip(c("Text", "for", "clipboard"), breaks = ", ", return_new = TRUE)
cb
#> [1] "Text, for, clipboard"
write_clip 函数的return_new参数
智能地处理数据框和矩阵,使用 write.table渲染它们,以便可以粘贴到像 Excel 这样的电子表格中。
tbl <- data.frame(a = c(1, 2, 3), b = c(4, 5, 6))
cb <- write_clip(tbl, return_new = TRUE)
cb
#> [1] "a\tb\n1\t4\n2\t5\n3\t6"
2.3 使用read_clip_tbl()
将尝试将电子表格中的剪贴板内容直接解析为数据框。
read_clip_tbl() # 智能读取数据框
# a b
#1 1 4
#2 2 5
#3 3 6
read_clip() # 直接读取字符串
#[1] "a\tb" "1\t4" "2\t5" "3\t6"
结束后:清空剪贴板
clear_clip()
3. 示例 – 在shiny中为用户提供“复制到剪贴板”按钮
library(shiny)
library(clipr)
#### Shiny 中调用剪切板 ####
ui <- fluidPage(
titlePanel("复制数据到剪切板"),
actionButton("copyBtn", "复制数据"),
tableOutput("dataTable")
)
server <- function(input, output) {
# 示例数据框
data <- reactive({
data.frame(
Name = c("Alice", "Bob", "Charlie"),
Age = c(25, 30, 35)
)
})
# 显示数据框
output$dataTable <- renderTable({
data()
})
# 监听按钮点击事件
observeEvent(input$copyBtn, {
clipr::write_clip(data(), allow_non_interactive = TRUE)
})
}
shinyApp(ui, server)
#### 实际上rclipboard包能更好兼容远程用户的剪贴板 ####