我正在使用ggplot2和制作几个直方图,facet_wrap并且想要绘制每个面板上的平均值.下面,我创建一个虚拟数据框,找到每个方面的平均值,然后创建添加平均值的图geom_point.
# Load libraries
library(tidyverse)
# Toy data frame
df <- data.frame(ID = sample(letters[1:3], 100, replace = TRUE), n = runif(100))
# Mean value of each group
df_mean <- df %>% group_by(ID) %>% summarise(mean = mean(n))
# Plot histograms
ggplot(df) +
geom_histogram(aes(n)) +
facet_wrap(~ID) +
geom_point(data = df_mean, aes(x = mean, y = Inf))
Run Code Online (Sandbox Code Playgroud)
我曾经y = Inf把这个点放在每个方面的顶部,但是 - 正如你所看到的 - 它有点被裁剪.我想向下轻推它,以便它完全可见.据我所知,geom_point没有nudge_y或vadj论证,0.7 * Inf显然是荒谬的.我也尝试添加position …
假设我有一个数据框,如下所示:
# Set RNG seed
set.seed(33550336)
# Create dummy data frame
df <- data.frame(PC1 = runif(20),
PC2 = runif(20),
PC3 = runif(20),
A = runif(20),
B = runif(20),
loc = sample(LETTERS[1:2], 20, replace = TRUE),
seas = sample(c("W", "S"), 20, replace = TRUE))
# > head(df)
# PC1 PC2 PC3 A B loc seas
# 1 0.8636470 0.02220823 0.7553348 0.4679607 0.0787467 A S
# 2 0.3522257 0.42733152 0.2412971 0.6691419 0.1194121 A W
# 3 0.5257408 0.44293320 0.3225228 0.0934192 0.2966507 B …Run Code Online (Sandbox Code Playgroud) 我有以下要执行多列合并的data.table:
# Load library
library(data.table)
# Dummy data set
dt <- data.table(a = 1:10,
t_alpha = runif(10),
t_beta = runif(10),
t_gamma = runif(10),
s_alpha = runif(10),
s_beta = runif(10),
s_gamma = runif(10))
# Look at data table
dt
#> a t_alpha t_beta t_gamma s_alpha s_beta s_gamma
#> 1: 1 0.73315322 0.7777962 0.13258401 0.12841353 0.20865995 0.8967482
#> 2: 2 0.10161042 0.9691244 0.23506277 0.35130324 0.36672933 0.9247026
#> 3: 3 0.95234142 0.7002526 0.07104051 0.85558314 0.39467530 0.8982107
#> 4: 4 0.48967202 0.3951288 …Run Code Online (Sandbox Code Playgroud) 我有一个函数,我想将运算符传递给它,如下所示:
foo <- function(a, b, op){
op(a, b)
}
foo(1, 2, `>`)
#> [1] FALSE
Run Code Online (Sandbox Code Playgroud)
由reprex 包(v0.3.0)于 2020 年 7 月 31 日创建
这正是我想要的。我的问题是,我可以在没有反引号的情况下实现相同的目标吗?也就是说,函数调用将是
foo(1, 2, >)
Run Code Online (Sandbox Code Playgroud) 我有一个关于使用OpenMP(使用C++)的简单问题,我希望有人可以帮助我.我在下面添加了一个小例子来说明我的问题.
#include<iostream>
#include<vector>
#include<ctime>
#include<omp.h>
using namespace std;
int main(){
srand(time(NULL));//Seed random number generator
vector<int>v;//Create vector to hold random numbers in interval [0,9]
vector<int>d(10,0);//Vector to hold counts of each integer initialized to 0
for(int i=0;i<1e9;++i)
v.push_back(rand()%10);//Push back random numbers [0,9]
clock_t c=clock();
#pragma omp parallel for
for(int i=0;i<v.size();++i)
d[v[i]]+=1;//Count number stored at v[i]
cout<<"Seconds: "<<(clock()-c)/CLOCKS_PER_SEC<<endl;
for(vector<int>::iterator i=d.begin();i!=d.end();++i)
cout<<*i<<endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
上面的代码创建了一个v包含该范围内10亿个随机整数的向量[0,9].然后,代码循环v计算每个不同整数的实例数(即,在v中找到多少个,有多少两个,等等)
每次遇到特定的整数时,都会通过递增向量的适当元素来计算d.因此,d[0]计算多少个零,d[6]计算多少六个,依此类推.到目前为止有道理吗?
我的问题是当我尝试使计数循环并行时.如果没有#pragma OpenMP …
我已经阅读了这本书,但仍然无法弄清楚这一点.我正在尝试通过创建Word报告bookdown.我想用来kableExtra为我的表添加条带化,以及加粗我的最后一个表行.可以kableExtra编织到Word时可以使用?
这是我的代码的一个子集:
library(dplyr)
knitr::opts_chunk$set(echo = TRUE)
library(knitr) # required for kable
library(kableExtra) # required for kableExtra
options(knit.r.table.format = "markdown")
myRegion <- c("a", "b", "c")
Current_Perc_1 <- c(85.9, 90.8, 89.7)
Current_Perc_2 <- c(88.0, 91.0, 89.0)
tab_curr_est_2_times <- cbind(myRegion, Current_Perc_1, Current_Perc_2)
tab_curr_est_2_times <- as.data.frame(tab_curr_est_2_times, stringsAsFactors = FALSE)
tab_curr_est_2_times$Current_Perc_1 <- as.double(tab_curr_est_2_times$Current_Perc_1)
tab_curr_est_2_times$Current_Perc_2 <- as.double(tab_curr_est_2_times$Current_Perc_2)
tab_curr_est_2_times$curr_change_1_to_2 <- tab_curr_est_2_times$Current_Perc_2 - tab_curr_est_2_times$Current_Perc_1
tab_1_curr <- tab_curr_est_2_times
tab_1_curr[ nrow(tab_1_curr)+1 , ] <- NA
tab_1_curr$myRegion[ nrow(tab_1_curr) ] <- "BRITISH COLUMBIA"
tab_1_curr$Current_Perc_1[ …Run Code Online (Sandbox Code Playgroud) 说,我有一个看起来像这样的 GAM:
# Load library
library(mgcv)
# Load data
data(mtcars)
# Model for mpg
mpg.gam <- gam(mpg ~ s(hp) + s(wt), data = mtcars)
Run Code Online (Sandbox Code Playgroud)
现在,我想使用ggplot2. 所以,我plot.gam用来生成我需要的所有信息,如下所示:
foo <- plot(mpg.gam)
Run Code Online (Sandbox Code Playgroud)
这也会产生一个不需要的数字。(是的,我意识到我在抱怨绘图函数绘制了一些东西......)visreg以相同的方式使用时,我只是指定plot = FALSE抑制数字,但plot.gam似乎没有这个选项。我的第一个想法是可能invisible会完成这项工作(例如,invisible(foo <- plot(mpg.gam))),但这似乎不起作用。是否有一种简单的方法可以在不将不需要的图形输出到文件的情况下执行此操作?
我想定义要在我的 RMarkdown PDF 文档中使用的字体。我想使用 Google 字体,例如 Roboto,但我没有直接安装它的管理员权限。尽管如此,我认为我可以解决这些特权,因为我已经安装了许多带有自己的字体(例如,tint)的R 包。
通常,要为降价文档设置自定义字体,我会在 YAML 中执行以下操作:
---
title: "Title"
output:
pdf_document:
latex_engine: xelatex
mainfont: Calibri
---
Run Code Online (Sandbox Code Playgroud)
如果安装了字体,这会起作用,但是,正如我所说,我无法安装字体。我可以通过showtext包使用 Google Fonts ,就像我下面的例子一样,但这仅适用于数字:
---
title: "Title"
output:
pdf_document
---
# Header One
## Header Two
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure …Run Code Online (Sandbox Code Playgroud) 我有一个三维数据结构,反映特定经度,纬度和深度的数据.我想对这个数据应用一个函数.通常,假设我想找到深度平均值,我会做以下事情:
apply(MyData, MAR = c(1, 2), mean)
Run Code Online (Sandbox Code Playgroud)
这对我来说很有意义.我正在努力的是我想要应用一个取决于经度和纬度的函数.是否有一种方法可以将元素索引传递给函数?
我正在尝试将netCDF文件作为光栅读入R。netCDF文件描述了海洋年平均温度与经度,纬度和深度的关系。我关心的是海洋表面(即netCDF文件中的第一级),它t_an是netCDF文件中变量的名称。因此,我使用以下代码:
MyRast <- raster("Temperature.nc", level = 1, varname = "t_an")
Run Code Online (Sandbox Code Playgroud)
这给了我以下警告:
Warning message:
In .getCRSfromGridMap4(atts) : cannot process these parts of the CRS: epsg_code=EPSG:4326
Run Code Online (Sandbox Code Playgroud)
如您所见,netCDF文件具有CRS EPSG 4326(或WGS 84),但是创建的栅格具有以下CRS:
+proj=longlat +lon_0=0 +a=6378137 +rf=298.257232666016
Run Code Online (Sandbox Code Playgroud)
有任何想法如何使用正确的CRS读取netCDF文件吗?
假设我有以下数据框:
\n\n# Dummy data frame\ndf <- data.frame(x = rep(1:5, 2), y = runif(10), z = rep(c("A", "B"), each = 5))\n\n# x y z\n# 1 1 0.92024937 A\n# 2 2 0.37246007 A\n# 3 3 0.76632809 A\n# 4 4 0.03418754 A\n# 5 5 0.33770400 A\n# 6 1 0.15367174 B\n# 7 2 0.78498276 B\n# 8 3 0.03341913 B\n# 9 4 0.77484244 B\n# 10 5 0.13309999 B\nRun Code Online (Sandbox Code Playgroud)\n\n我想绘制z == "A"点和z == "B"线的情况。够简单的。
library(ggplot2)\n# Plot data\ng <- ggplot()\ng …Run Code Online (Sandbox Code Playgroud) 
ggplot(data=Dane, aes(x=reg$fitted.values, y=reg$residuals))+
geom_smooth(method="lm", se=TRUE, level=0.95)+
theme(panel.background = element_rect(fill = "white", colour = "grey50"))+
geom_point()
Run Code Online (Sandbox Code Playgroud) 我有一个数据表,看起来像这样:
# Load library
library(data.table)
# Set RNG seed
set.seed(-1)
# Create data table
dt <- data.table(year = 2000:2019,
value = runif(20))
# Peek
dt
#> year value
#> 1: 2000 0.48666718
#> 2: 2001 0.19136526
#> 3: 2002 0.99327188
#> 4: 2003 0.14670268
#> 5: 2004 0.24158948
#> 6: 2005 0.53710122
#> 7: 2006 0.35821235
#> 8: 2007 0.87191898
#> 9: 2008 0.39259106
#> 10: 2009 0.21656725
#> 11: 2010 0.79346199
#> 12: 2011 0.26007283
#> 13: …Run Code Online (Sandbox Code Playgroud) r ×12
ggplot2 ×3
data.table ×2
r-markdown ×2
apply ×1
bookdown ×1
c++ ×1
correlation ×1
dplyr ×1
facet-wrap ×1
gam ×1
histogram ×1
kableextra ×1
melt ×1
mgcv ×1
netcdf ×1
openmp ×1
performance ×1
r-raster ×1
raster ×1
showtext ×1