我想比较条件x和y的值.这是我的数据:
mydata <- structure(list(
Row.names = c("ASPTAm", "ATPtmB_MitoCore", "CI_MitoCore",
"CIII_MitoCore", "CIV_MitoCore", "CO2t", "CO2tm", "CV_MitoCore",
"H2Ot", "H2Otm", "MDH", "MDHm", "O2t", "O2tm", "OF_ATP_MitoCore",
"PGK", "PGM", "PIt2mB_MitoCore", "SUCOASm"),
mean_x = c(-1.416333333,
26.1376024, 8.444222444, 9.983111555, 4.991555778, -5.06, -5.055,
24.43926907, -4.719, -30.9051024, -1.580333333, 3.093666667,
5, 5, 29.7476024, -1.81, -1.81, 25.9436024, -1.698333333),
mean_y = c(-2.455e-14,
78.68825722, 51.30062794, 9.897398744, 4.948699372, -40.05114286,
-40.15114286, 68.14247151, -29.51685714, -108.3586144, -60.164,
10.90278571, 5, 5, 82.39825722, -1.81, -1.81, 86.41154294, -10.58878571
)),
class = "data.frame", row.names = c(NA, -19L),
.Names = c("Row.names", "mean_x", "mean_y")) …Run Code Online (Sandbox Code Playgroud) 我一直在使用一些函数式程序来避免改变结构,并且没有明确的解释哪种方法在性能方面是最好的。
在这种情况下,任何人都可以帮忙并建议性能和内存管理方面的最佳解决方案是什么?
例如:
变异选项
struct User {
var name:String
init(name:String) {
self.name = name
}
mutating func change(name:String){
self.name = name
}
}
Run Code Online (Sandbox Code Playgroud)
非变异选项
struct User {
var name:String
init(name:String) {
self.name = name
}
func change(name:String) -> User {
return User(name: name)
}
}
Run Code Online (Sandbox Code Playgroud) 我想在ggplot标题中添加一个图像或svg.
这就是我的目标:
让眼睛" 在这里 "
我对它不满意,因为我必须尝试错误以使它进入正确的位置.不是一般的解决方案.
library(ggplot2)
library(raster)
library(grid)
img1 <- as.matrix(raster(system.file("external/rlogo.grd", package="raster")))
img1[img1>128] <- NA
img1[img1>0] <- 0
image(img1)
g1 <- rasterGrob(img1, interpolate=TRUE)
p <- ggplot(mtcars, aes(wt, mpg)) +
geom_point() +
ggtitle(" <- dat rLogo tho") +
annotation_custom(g1,xmin = 1.2,1.6,35.5,38)
gt <- ggplot_gtable(ggplot_build(p))
gt$layout$clip[gt$layout$name == "panel"] <- "off"
grid.draw(gt)
Run Code Online (Sandbox Code Playgroud) 我一直在阅读关于dplyr中的SE和NSE,并且遇到了我实际需要SE的问题.我有以下函数,应该找到一些项匹配的行,但目标变量不:
find_dataset_inconsistencies <- function(df, target_column, cols_to_use) {
inconsists <- df %>%
group_by_at(cols_to_use) %>%
summarise(uTargets = length(unique(get(target_column)))) %>%
filter(uTargets > 1)
}
Run Code Online (Sandbox Code Playgroud)
这似乎适用于我的情况.但是,get(target_column)是一种解决方法,因为我需要变量的SE而不能对列名进行硬编码.我最初尝试使用SE版本(summarise_(.dots = ...)),但无法找到用于评估target_column的正确语法.
我的问题如下:简单使用有什么缺点get()吗?这是不行的吗?任何风险/减速?简单地使用get肯定比"正确的"SE语法更具可读性.
我正在使用该mgcv包根据一些环境协变量对臭氧污染浓度进行建模。该模型采用以下形式:
model1 <- gam(O3 ~ s(X, Y, bs = "tp", k = 10) + wd + s(date, bs = "cc", k = 100) + district,
data = mydata, family = gaussian(link ="log"),
na.action = "na.omit", method = "REML")
Run Code Online (Sandbox Code Playgroud)
这是协变量的结构:
> str(mydata)
'data.frame': 7100 obs. of 286 variables:
$ date : Date, format: "2016-01-01" "2016-01-01" "2016-01-01" ...
$ O3 : num 0.0141 0.0149 0.0102 0.0159 0.0186 ...
$ district : Factor w/ 10 levels "bc","bh","dl",..: 1 8 7 8 …Run Code Online (Sandbox Code Playgroud) 据我ggplot2 所知,由绘制的标签的尺寸geom_text。否则,该check_overlap选项将不起作用。
这些维度存储在哪里,如何访问它们?
说明性例子
library(ggplot2)
df <- data.frame(x = c(1, 2),
y = c(1, 1),
label = c("label-one-that-might-overlap-another-label",
"label-two-that-might-overlap-another-label"),
stringsAsFactors = FALSE)
Run Code Online (Sandbox Code Playgroud)
使用check_overlap = FALSE(默认)标签会相互重叠。
ggplot(df, aes(x, y)) +
geom_text(aes(label = label)) +
xlim(0, 3)
Run Code Online (Sandbox Code Playgroud)
使用check_overlap = TRUE,不会绘制第二个标签,因为会ggplot发现重叠。
ggplot(df, aes(x, y)) +
geom_text(aes(label = label), check_overlap = TRUE) +
xlim(0, 3)
Run Code Online (Sandbox Code Playgroud)
怎么ggplot2知道那些标签重叠?我如何访问该信息?
pivot_longer到目前为止,我真的很喜欢使用。有没有办法将我的列的后缀作为pivot_longer命令的一部分?该函数有一个names_prefix参数,但似乎不允许您使用后缀。
data <- tibble::tribble(
~last_name, ~first_name, ~pitcher, ~ff_avg_spin, ~si_avg_spin, ~fc_avg_spin, ~sl_avg_spin, ~ch_avg_spin, ~cu_avg_spin, ~fs_avg_spin,
"Bauer", "Trevor", 545333, 2286, 2276, 2539, 2687, 1441, 2464, NA,
"Rodon", "Carlos", 607074, 2148, 2211, 2153, 2465, 1725, 2457, 2630,
"Verlander", "Justin", 434378, 2583, NA, 2595, 2626, 1870, 2796, NA
)
data_long <- data %>%
pivot_longer(
cols = contains("spin"),
names_to = "pitch_type",
values_to = "avg_spin",
values_drop_na = TRUE
)
Run Code Online (Sandbox Code Playgroud)
我怎样才能让pitch_type列只列出 _avg_spin 之前的文本?IE ff、si、fc 等。理想情况下,我希望该文本大写,但我可以使用在pivot_longer
我试图写一个自定义stat_*的ggplot2,在这里我想用瓷砖颜色的2D黄土表面。当我从扩展指南开始时,我可以像他们一样编写stat_chull:
stat_chull = function(mapping = NULL, data = NULL, geom = "polygon",
position = "identity", na.rm = FALSE, show.legend = NA,
inherit.aes = TRUE, ...) {
chull = ggproto("chull", Stat,
compute_group = function(data, scales) {
data[chull(data$x, data$y), , drop = FALSE]
},
required_aes = c("x", "y")
)
layer(
stat = chull, data = data, mapping = mapping, geom = geom,
position = position, show.legend = show.legend, inherit.aes = inherit.aes,
params = list(na.rm = na.rm, …Run Code Online (Sandbox Code Playgroud) 我无法从ggrough库中复制示例( https://xvrdm.github.io/ggroough/articles/Customize%20chart.html )。特别是,我试图复制以下情节(减去字体方面):
代码来自上面“幼儿园”标题下的相同链接。
我正在使用以下代码:
library(hrbrthemes)
library(tidyverse)
library(gcookbook)
library(ggplot2)
library(ggrough)
ggplot(uspopage, aes(x=Year, y=Thousands, fill=AgeGroup)) +
geom_area(alpha=0.8) +
scale_fill_ipsum() +
scale_x_continuous(expand=c(0,0)) +
scale_y_comma() -> p
options <- list(GeomArea=list(fill_style="hachure",
angle_noise=0.5,
gap_noise=0.2,
gap=1.5,
fill_weight=1))
get_rough_chart(p, options)
Run Code Online (Sandbox Code Playgroud)
但是,我无法复制上述内容。这是我得到的:
同样,我不担心字体,但确实想让阴影 geom_area 工作。它目前根本不渲染。作为参考,这里是p对象产生的结果(即,经过ggrough处理之前的图):
另请注意,我能够复制“蓝图”示例,该示例使用geom_col. 所以看来事情错用ggrough处理geom_area,但不能肯定。