提问人:GuedesBF 提问时间:11/16/2023 最后编辑:jpsmithGuedesBF 更新时间:11/16/2023 访问量:54
从 R 脚本中的现有数据生成格式化的 data.frame 或 tibble(或任何函数)调用
Generating Formatted data.frame or tibble (or any function) Calls from Existing Data in R Script
问:
我想在 R 中创建对 data.frame 或 tibble 的可重现和格式化调用,类似于手动构造它。给定一个名为 df 的 data.frame:
Sepal.Length Sepal.Width
1 5.1 3.5
2 4.9 3.0
3 4.7 3.2
4 4.6 3.1
我可以使用 dput(df) 来获得如下输出:
dput(df)
structure(list(Sepal.Length = c(5.1, 4.9, 4.7, 4.6), Sepal.Width = c(3.5,
3, 3.2, 3.1)), row.names = c(NA, 4L), class = "data.frame")
但是,我寻求一种方法来生成对 data.frame(或 tibble)的格式化调用,就好像我正在手动构造它一样,参数按行分隔:
data.frame(Sepal.Length = c(5.1,
4.9,
4.7,
4.6),
Sepal.Width = c(3.5,
3,
3.2,
3.1)
)
我想知道是否有现有的 RStudio 加载项或简单的方法来实现这一目标。我在 Stack Overflow 上没有找到满意的答案,之前与 ChatGPT 的互动也无济于事。
分项问题2
在 RStudio 中格式化函数调用以提高可读性
RStudio 中是否有一种简单的方法来获取格式化的函数调用,例如:
function(
argumentA,
argumentB,
argumentC
)
而不是一行:
function(argumentA, argumentB, argumentC)
我正在寻找一种方法,通过将函数参数分解为新行来提高代码可读性,我想知道是否有内置功能或加载项可以在 RStudio 中实现这一点。任何指导将不胜感激。
答:
2赞
Jon Spring
11/16/2023
#1
library(datapasta)
clipr::write_clip(df) # or select and Ctrl-C
#Addins -- DATAPASTA - Paste as tribble
tibble::tribble(
~Sepal.Length, ~Sepal.Width,
5.1, 3.5,
4.9, 3,
4.7, 3.2,
4.6, 3.1
)
#Addins - DATAPASTA - Paste as data.frame
data.frame(
Sepal.Length = c(5.1, 4.9, 4.7, 4.6),
Sepal.Width = c(3.5, 3, 3.2, 3.1)
)
对于您的第二个问题(应该是第二个问题),包将执行此操作,但您需要找到具有该规则的样式,或者创建一个样式。styler
评论
0赞
GuedesBF
11/16/2023
谢谢你,乔恩。我不确定这应该是第二个问题,因为它们是相关的,感谢您的澄清和这个精妙的建议datapasta
1赞
jpsmith
11/16/2023
#2
对于第一部分,您可以使用包中的函数,我相信它会输出您想要的确切内容。在这里,在完整的数据集上:construct
construct
iris
library(constructive)
construct(iris)
输出:
data.frame(
Sepal.Length = c(
5.1, 4.9, 4.7, 4.6, 5, 5.4, 4.6, 5, 4.4, 4.9, 5.4, 4.8, 4.8, 4.3, 5.8, 5.7,
5.4, 5.1, 5.7, 5.1, 5.4, 5.1, 4.6, 5.1, 4.8, 5, 5, 5.2, 5.2, 4.7, 4.8, 5.4,
5.2, 5.5, 4.9, 5, 5.5, 4.9, 4.4, 5.1, 5, 4.5, 4.4, 5, 5.1, 4.8, 5.1, 4.6, 5.3,
5, 7, 6.4, 6.9, 5.5, 6.5, 5.7, 6.3, 4.9, 6.6, 5.2, 5, 5.9, 6, 6.1, 5.6, 6.7,
5.6, 5.8, 6.2, 5.6, 5.9, 6.1, 6.3, 6.1, 6.4, 6.6, 6.8, 6.7, 6, 5.7, 5.5, 5.5,
5.8, 6, 5.4, 6, 6.7, 6.3, 5.6, 5.5, 5.5, 6.1, 5.8, 5, 5.6, 5.7, 5.7, 6.2, 5.1,
5.7, 6.3, 5.8, 7.1, 6.3, 6.5, 7.6, 4.9, 7.3, 6.7, 7.2, 6.5, 6.4, 6.8, 5.7,
5.8, 6.4, 6.5, 7.7, 7.7, 6, 6.9, 5.6, 7.7, 6.3, 6.7, 7.2, 6.2, 6.1, 6.4, 7.2,
7.4, 7.9, 6.4, 6.3, 6.1, 7.7, 6.3, 6.4, 6, 6.9, 6.7, 6.9, 5.8, 6.8, 6.7, 6.7,
6.3, 6.5, 6.2, 5.9
),
Sepal.Width = c(
3.5, 3, 3.2, 3.1, 3.6, 3.9, 3.4, 3.4, 2.9, 3.1, 3.7, 3.4, 3, 3, 4, 4.4, 3.9,
3.5, 3.8, 3.8, 3.4, 3.7, 3.6, 3.3, 3.4, 3, 3.4, 3.5, 3.4, 3.2, 3.1, 3.4, 4.1,
4.2, 3.1, 3.2, 3.5, 3.6, 3, 3.4, 3.5, 2.3, 3.2, 3.5, 3.8, 3, 3.8, 3.2, 3.7,
3.3, 3.2, 3.2, 3.1, 2.3, 2.8, 2.8, 3.3, 2.4, 2.9, 2.7, 2, 3, 2.2, 2.9, 2.9,
3.1, 3, 2.7, 2.2, 2.5, 3.2, 2.8, 2.5, 2.8, 2.9, 3, 2.8, 3, 2.9, 2.6, 2.4, 2.4,
2.7, 2.7, 3, 3.4, 3.1, 2.3, 3, 2.5, 2.6, 3, 2.6, 2.3, 2.7, 3, 2.9, 2.9, 2.5,
2.8, 3.3, 2.7, 3, 2.9, 3, 3, 2.5, 2.9, 2.5, 3.6, 3.2, 2.7, 3, 2.5, 2.8, 3.2,
3, 3.8, 2.6, 2.2, 3.2, 2.8, 2.8, 2.7, 3.3, 3.2, 2.8, 3, 2.8, 3, 2.8, 3.8, 2.8,
2.8, 2.6, 3, 3.4, 3.1, 3, 3.1, 3.1, 3.1, 2.7, 3.2, 3.3, 3, 2.5, 3, 3.4, 3
),
Petal.Length = c(
1.4, 1.4, 1.3, 1.5, 1.4, 1.7, 1.4, 1.5, 1.4, 1.5, 1.5, 1.6, 1.4, 1.1, 1.2,
1.5, 1.3, 1.4, 1.7, 1.5, 1.7, 1.5, 1, 1.7, 1.9, 1.6, 1.6, 1.5, 1.4, 1.6, 1.6,
1.5, 1.5, 1.4, 1.5, 1.2, 1.3, 1.4, 1.3, 1.5, 1.3, 1.3, 1.3, 1.6, 1.9, 1.4,
1.6, 1.4, 1.5, 1.4, 4.7, 4.5, 4.9, 4, 4.6, 4.5, 4.7, 3.3, 4.6, 3.9, 3.5, 4.2,
4, 4.7, 3.6, 4.4, 4.5, 4.1, 4.5, 3.9, 4.8, 4, 4.9, 4.7, 4.3, 4.4, 4.8, 5, 4.5,
3.5, 3.8, 3.7, 3.9, 5.1, 4.5, 4.5, 4.7, 4.4, 4.1, 4, 4.4, 4.6, 4, 3.3, 4.2,
4.2, 4.2, 4.3, 3, 4.1, 6, 5.1, 5.9, 5.6, 5.8, 6.6, 4.5, 6.3, 5.8, 6.1, 5.1,
5.3, 5.5, 5, 5.1, 5.3, 5.5, 6.7, 6.9, 5, 5.7, 4.9, 6.7, 4.9, 5.7, 6, 4.8, 4.9,
5.6, 5.8, 6.1, 6.4, 5.6, 5.1, 5.6, 6.1, 5.6, 5.5, 4.8, 5.4, 5.6, 5.1, 5.1,
5.9, 5.7, 5.2, 5, 5.2, 5.4, 5.1
),
Petal.Width = c(
0.2, 0.2, 0.2, 0.2, 0.2, 0.4, 0.3, 0.2, 0.2, 0.1, 0.2, 0.2, 0.1, 0.1, 0.2,
0.4, 0.4, 0.3, 0.3, 0.3, 0.2, 0.4, 0.2, 0.5, 0.2, 0.2, 0.4, 0.2, 0.2, 0.2,
0.2, 0.4, 0.1, 0.2, 0.2, 0.2, 0.2, 0.1, 0.2, 0.2, 0.3, 0.3, 0.2, 0.6, 0.4,
0.3, 0.2, 0.2, 0.2, 0.2, 1.4, 1.5, 1.5, 1.3, 1.5, 1.3, 1.6, 1, 1.3, 1.4, 1,
1.5, 1, 1.4, 1.3, 1.4, 1.5, 1, 1.5, 1.1, 1.8, 1.3, 1.5, 1.2, 1.3, 1.4, 1.4,
1.7, 1.5, 1, 1.1, 1, 1.2, 1.6, 1.5, 1.6, 1.5, 1.3, 1.3, 1.3, 1.2, 1.4, 1.2, 1,
1.3, 1.2, 1.3, 1.3, 1.1, 1.3, 2.5, 1.9, 2.1, 1.8, 2.2, 2.1, 1.7, 1.8, 1.8,
2.5, 2, 1.9, 2.1, 2, 2.4, 2.3, 1.8, 2.2, 2.3, 1.5, 2.3, 2, 2, 1.8, 2.1, 1.8,
1.8, 1.8, 2.1, 1.6, 1.9, 2, 2.2, 1.5, 1.4, 2.3, 2.4, 1.8, 1.8, 2.1, 2.4, 2.3,
1.9, 2.3, 2.5, 2.3, 1.9, 2, 2.3, 1.8
),
Species = factor(rep(c("setosa", "versicolor", "virginica"), each = 50L))
对于第 2 部分,在 Rstudio 中,如果您突出显示代码 + +,它将为您正确重新格式化代码。(有关此部分的 Stack Overflow 问题/答案,请参阅此处)shift
control
A
评论