R:是否可以将 'copy/paste' 数据放入 R 中?
R: Is it possible to 'copy/paste' data into R?
我正在使用 R 编程语言。假设我在 Internet 浏览器中看到以下格式的数据(例如关于 Whosebug 问题):
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
问题:是否可以把这个数据带入R,直接把这个数据做成数据框(不用重新格式化,或者最少重新格式化)?
显然,下面的语句是行不通的:
my_data <- data.frame(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)
目前,我正在手动执行此操作,例如
weight <- c("2998.958", "3002.208", "3008.171", etc. )
height <- c("15.26611", etc. )
age <- c("53", "52", etc.)
my_data <- data.frame(weight, height, age)
是否有更“直接”(即更快的方法)来做到这一点?
谢谢!
更简单的选择是复制行 (Cntrl + C
),然后使用 soread
library(overflow)
soread()
data.frame “mydf” created in your workspace
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
...
检查
> str(mydf)
'data.frame': 15 obs. of 3 variables:
$ weight: num 2999 3002 3008 3002 3001 ...
$ height: num 15.3 18.1 16.7 17.4 18 ...
$ age : int 53 52 49 55 50 45 47 47 50 42 ...
如果我们想将其重命名为不同的对象,请更改默认为“mydf”的out
soread(out = "df1")
因为基于?soread
的用法是
soread(
sep = "",
header = TRUE,
stringsAsFactors = FALSE,
skipAfterHeader = NULL,
out = "mydf"
)
它可以从 github 和
安装
source("http://news.mrdwab.com/install_github.R")
install_github("mrdwab/overflow-mrdwab")
而不是 data.frame
。您可以将其传递给 read.table
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)
如果数据在您的剪贴板上,您可以
read.table("clipboard", header=TRUE)
在 base R 中使用 read.table
的 text=
参数很容易:您需要指定 header=TRUE
(表示第一行是列名)和 row.names=1
(表示第一列是行名)。将可选参数放在前面很方便,“乱序”,这样它们就可以在大文本块上方看到。
my_data <- read.table(header=TRUE,
row.names = 1,
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
")
我正在使用 R 编程语言。假设我在 Internet 浏览器中看到以下格式的数据(例如关于 Whosebug 问题):
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
问题:是否可以把这个数据带入R,直接把这个数据做成数据框(不用重新格式化,或者最少重新格式化)?
显然,下面的语句是行不通的:
my_data <- data.frame(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)
目前,我正在手动执行此操作,例如
weight <- c("2998.958", "3002.208", "3008.171", etc. )
height <- c("15.26611", etc. )
age <- c("53", "52", etc.)
my_data <- data.frame(weight, height, age)
是否有更“直接”(即更快的方法)来做到这一点?
谢谢!
更简单的选择是复制行 (Cntrl + C
),然后使用 soread
library(overflow)
soread()
data.frame “mydf” created in your workspace
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
...
检查
> str(mydf)
'data.frame': 15 obs. of 3 variables:
$ weight: num 2999 3002 3008 3002 3001 ...
$ height: num 15.3 18.1 16.7 17.4 18 ...
$ age : int 53 52 49 55 50 45 47 47 50 42 ...
如果我们想将其重命名为不同的对象,请更改默认为“mydf”的out
soread(out = "df1")
因为基于?soread
的用法是
soread( sep = "", header = TRUE, stringsAsFactors = FALSE, skipAfterHeader = NULL, out = "mydf" )
它可以从 github 和
安装source("http://news.mrdwab.com/install_github.R")
install_github("mrdwab/overflow-mrdwab")
而不是 data.frame
。您可以将其传递给 read.table
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)
如果数据在您的剪贴板上,您可以
read.table("clipboard", header=TRUE)
在 base R 中使用 read.table
的 text=
参数很容易:您需要指定 header=TRUE
(表示第一行是列名)和 row.names=1
(表示第一列是行名)。将可选参数放在前面很方便,“乱序”,这样它们就可以在大文本块上方看到。
my_data <- read.table(header=TRUE,
row.names = 1,
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
")