R语言中能否将复制的结构化数据直接转换为data.frame?
R快速导入网页格式化表格为data.frame的方法
完全不需要手动拆分各列生成向量,以下两种方式都可以直接完成转换:
方法1:直接读取剪贴板(最便捷)
先选中并复制网页上的全部表格内容(含表头行),再根据你的操作系统运行对应代码即可:
- Windows系统:
my_data <- read.table("clipboard", header = TRUE, stringsAsFactors = FALSE)
- macOS系统:
my_data <- read.table(pipe("pbpaste"), header = TRUE, stringsAsFactors = FALSE)
- Linux系统:
my_data <- read.table(pipe("xclip -selection clipboard -o"), header = TRUE, stringsAsFactors = FALSE)
read.table会自动识别多空格、制表符等空白分隔符,header=TRUE会将第一行内容识别为列名,原表格第一列的序号会自动设为行名,无需额外调整。
方法2:将表格内容嵌入代码(可复现场景用)
如果需要把数据直接写在R脚本中保证可复现,只需将复制的表格内容放入read.table的text参数即可:
my_data <- read.table( text = "weight height age 1 2998.958 15.26611 53 2 3002.208 18.08711 52 3 3008.171 16.70896 49 4 3002.374 17.37032 55 5 3000.658 18.04860 50 6 3002.688 17.24797 45 7 3004.923 16.45360 47 8 2987.264 16.71712 47 9 3011.332 17.76626 50 10 2983.783 18.10337 42 11 3007.167 18.18355 50 12 3007.049 18.11375 53 13 3002.656 15.49990 42 14 2986.710 16.73089 47 15 2998.286 17.12075 52", header = TRUE, stringsAsFactors = FALSE )
扩展:tidyverse生态便捷方法
如果安装了tidyverse套件,用readr::read_table处理速度更快,语法逻辑完全一致:
# 读剪贴板示例 library(readr) my_data <- read_table(clipboard())
如果不需要保留原表格的序号列,加参数row.names = 1即可自动删除。
内容的提问来源于stack exchange,提问作者stats_noob
相关产品推荐
相关产品推荐

