gpt4 book ai didi

r - 如何根据以前的方 block 递归创建方 block ?

转载 作者:行者123 更新时间:2023-12-05 08:45:37 25 4
gpt4 key购买 nike

我有一个 df,其中包含用于创建正方形的坐标:

library(ggplot2)

df = data.frame(xmin = 1, xmax = 3, ymin = 10, ymax = 15)

ggplot(df) +
geom_rect(aes(xmin = xmin, xmax = xmax, ymin = ymin, ymax = ymax), fill = "green")

enter image description here

现在,我想要一个函数,当它被赋予 df 时,它向 df 添加新行,原始正方形的 5 个缩放版本,显示像这样:

enter image description here

这意味着,新方 block 中绿色方 block 的面积对应于原始方 block 的 5/9。

我还想以递归方式进行,因此,给定具有缩放版本的 df(5 个正方形,如第二张图片所示),它给出:

enter image description here

等等。

最佳答案

使用递归方法,您可以:

square5 <- function(xmin, xmax, ymin, ymax) {
x <- data.frame(
xmin = c(0, rep(1/3, 3), 2/3),
xmax = c(0, rep(1/3, 3), 2/3) + 1/ 3,
ymin = c(1/3, 0, 1/3, 2/3, 1/3),
ymax = c(1/3, 0, 1/3, 2/3, 1/3) + 1/ 3
)

x[c("xmin", "xmax")] <- lapply(x[c("xmin", "xmax")], scales::rescale, to = c(xmin, xmax), from = c(0, 1))
x[c("ymin", "ymax")] <- lapply(x[c("ymin", "ymax")], scales::rescale, to = c(ymin, ymax), from = c(0, 1))

return(x)
}

df = data.frame(xmin = 1, xmax = 3, ymin = 10, ymax = 15)

df1 <- purrr::reduce(seq(5), function(x, n) purrr::pmap_df(x, square5), .init = df)

library(ggplot2)

ggplot(df1) +
geom_rect(aes(xmin = xmin, xmax = xmax, ymin = ymin, ymax = ymax), fill = "green", color = "darkgreen", size = .5)

关于r - 如何根据以前的方 block 递归创建方 block ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72232035/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com