小编Lyn*_*akr的帖子

绘图表示使用facet_wrap创建的直方图

我正在使用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_yvadj论证,0.7 * Inf显然是荒谬的.我也尝试添加position …

r histogram ggplot2 facet-wrap

5
推荐指数
1
解决办法
1078
查看次数

在dplyr中分组的众多变量之间的相关性

假设我有一个数据框,如下所示:

# 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)

r correlation dplyr

5
推荐指数
1
解决办法
508
查看次数

使用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)

r melt data.table

5
推荐指数
1
解决办法
97
查看次数

传递不带反引号的运算符

我有一个函数,我想将运算符传递给它,如下所示:

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)

r

5
推荐指数
1
解决办法
56
查看次数

OpenMP和C++并行for循环:为什么我的代码在使用OpenMP时会变慢?

我有一个关于使用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 …

c++ parallel-processing performance openmp

4
推荐指数
1
解决办法
7912
查看次数

从.rmd编织到Word时如何格式化kable表(带书签)

我已经阅读了这本书,但仍然无法弄清楚这一点.我正在尝试通过创建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)

r r-markdown bookdown kableextra

4
推荐指数
3
解决办法
7703
查看次数

防止 plot.gam 生成图形

说,我有一个看起来像这样的 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))),但这似乎不起作用。是否有一种简单的方法可以在不将不需要的图形输出到文件的情况下执行此操作?

r gam mgcv

3
推荐指数
1
解决办法
325
查看次数

在没有管理员权限的 RMarkdown 主体中使用 Google 字体

我想定义要在我的 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)

r r-markdown showtext

3
推荐指数
1
解决办法
907
查看次数

R apply:使用函数中的元素索引

我有一个三维数据结构,反映特定经度,纬度和深度的数据.我想对这个数据应用一个函数.通常,假设我想找到深度平均值,我会做以下事情:

apply(MyData, MAR = c(1, 2), mean)
Run Code Online (Sandbox Code Playgroud)

这对我来说很有意义.我正在努力的是我想要应用一个取决于经度和纬度的函数.是否有一种方法可以元素索引传递给函数?

r apply

2
推荐指数
1
解决办法
46
查看次数

R:读取netCDF文件作为栅格

我正在尝试将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文件吗?

r raster netcdf r-raster

2
推荐指数
1
解决办法
5079
查看次数

使用跨几何图形的通用美学和数据框过滤 ggplot2 的几何图形

假设我有以下数据框:

\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\n
Run Code Online (Sandbox Code Playgroud)\n\n

我想绘制z == "A"点和z == "B"线的情况。够简单的。

\n\n
library(ggplot2)\n# Plot data\ng <- ggplot()\ng …
Run Code Online (Sandbox Code Playgroud)

r ggplot2

2
推荐指数
1
解决办法
6133
查看次数

如何在 ggplot2 中绘制置信区间限制的虚线?工作室R

在此输入图像描述

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)

r ggplot2

2
推荐指数
1
解决办法
2434
查看次数

在data.table中同时更新和选择

我有一个数据,看起来像这样:

# 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 data.table

0
推荐指数
1
解决办法
43
查看次数