【问题标题】:R data.frame command from existing dataframe [duplicate]来自现有数据帧的 R data.frame 命令[重复]
【发布时间】:2020-08-05 08:21:58
【问题描述】:

R 中有没有一种方法可以根据现有的数据框生成“代码”来创建数据框?这样可以更轻松地通过可重复的示例提出 SO 问题。

例如:

> data(mtcars)
> df <- head(mtcars)
> df
                   mpg cyl disp  hp drat    wt  qsec vs am gear carb
Mazda RX4         21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
Mazda RX4 Wag     21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
Datsun 710        22.8   4  108  93 3.85 2.320 18.61  1  1    4    1
Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44  1  0    3    1
Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2
Valiant           18.1   6  225 105 2.76 3.460 20.22  1  0    3    1

magic_function(df)

"df <- data.frame(mpg  = c('value_1', 'value_2', ...),
                  cyl = c('value_1', 'value_2', ...),....
                  )"

【问题讨论】:

  • 使用 dput(mtcars)
  • 是的。谢谢你们。老实说,我试着在网上找了一会儿但找不到它,所以如果我在下面给出一个完整而干净的答案,也许值得保留它。不过不确定,我不想不必要地重复。
  • 从这个答案我可以看到有一个名为datapasta stackoverflow.com/questions/18746456/simplified-dput-in-r 的包似乎比dput 更容易。

标签: r dataframe


【解决方案1】:

您正在寻找的功能是“dput(mtcars)”,正如 Roland 在他的评论中指出的那样。

示例:

df1<-data.frame(ID= 1:10, y = rnorm(10, 50), group= rep(c("A","B"),5))

#  ID        y group
#1   1 49.91448     A
#2   2 50.71076     B
#3   3 51.99664     A
#4   4 50.89964     B
#5   5 49.92638     A
#6   6 49.68232     B
#7   7 48.69369     A
#8   8 50.15223     B
#9   9 49.14595     A
#10 10 51.19469     B


> dput(df1)
** Copy following output from console**

# structure(list(ID = 1:10, y = c(49.5838950074112, 48.2157755931339, 
#49.6788263608271, 49.2647058738269, 50.8090753588302, 51.5603249320185, 
#49.1274987940471, 50.3875737336775, 50.067929898497, 49.5100624688757
#), group = structure(c(1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L
#), .Label = c("A", "B"), class = "factor")), class = "data.frame", row.names = c(NA, 
#-10L))

** paste it back and assign to df2**

df2 <- structure(list(ID = 1:10, y = c(49.5838950074112, 48.2157755931339, 
49.6788263608271, 49.2647058738269, 50.8090753588302, 51.5603249320185, 
49.1274987940471, 50.3875737336775, 50.067929898497, 49.5100624688757),
group = structure(c(1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L),
 .Label = c("A", "B"), class = "factor")), class = "data.frame", row.names = c(NA, 
-10L))

> all.equal(df1,df2)
[1] TRUE

【讨论】:

  • 如果您提供完整的答案,我接受
  • 我更新了我的答案。
  • 按照您的示例,我不清楚如何复制和粘贴命令以供其他人在自己的环境中重新创建数据框。
  • 1.在 data.frame 上运行 dput () 函数,2. 从控制台复制输出。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-04-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-22
  • 1970-01-01
  • 2023-03-17
相关资源
最近更新 更多