小编ial*_*alm的帖子

为什么我不应该包含cpp文件而是使用标题?

所以我完成了我的第一个C++编程任务,并获得了我的成绩.但根据评分,我失去了分数including cpp files instead of compiling and linking them.我不清楚这意味着什么.

回顾一下我的代码,我选择不为我的类创建头文件,但是在cpp文件中做了所有事情(它看起来没有头文件......).我猜这个评分者意味着我写了'#include'mycppfile.cpp";' 在我的一些文件中.

#include对cpp文件的推理是: - 应该进入头文件的所有东西都在我的cpp文件中,所以我假装它就像一个头文件 - 在猴子看猴子做时尚,我看到了其他头文件#include在文件中是'd,所以我为我的cpp文件做了同样的事情.

那究竟是我做错了什么,为什么不好呢?

c++ header-files

132
推荐指数
6
解决办法
2万
查看次数

在更改选项卡面板时显示Shiny正忙(或加载)

(问题描述后的代码)

我正在制作一个带有Shiny的Web应用程序,我正在执行的一些R命令需要几分钟才能完成.我发现我需要向用户提供Shiny正在工作的一些指示,或者他们会不断更改我在侧面板中提供的参数,这只会导致Shiny在初始运行完成后被动地重新启动计算.

所以,我创建了一个条件面板,显示一条带有以下内容的"正在加载"消息(称为模态)(感谢Shiny Google小组中Joe Cheng的条件声明):

# generateButton is the name of my action button
loadPanel <- conditionalPanel("input.generateButton > 0 && $('html').hasClass('shiny-busy')"),
                              loadingMsg)
Run Code Online (Sandbox Code Playgroud)

如果用户仍在当前选项卡上,则此操作正常.但是,用户可以切换到另一个选项卡(可能包含一些需要运行一段时间的计算),但加载面板会立即显示并消失,而R会在计算结果时突然显示,然后仅在之后刷新内容它完成了.

由于这可能难以想象,我提供了一些代码在下面运行.您会注意到单击按钮开始计算将产生一个很好的加载消息.但是,当您切换到选项卡2时,R开始运行一些计算,但无法显示加载消息(可能Shiny没有注册为忙?).如果再次按下按钮重新开始计算,则加载屏幕将正确显示.

我希望在切换到正在加载的选项卡时显示加载消息!

ui.R

library(shiny)

# Code to make a message that shiny is loading
# Make the loading bar
loadingBar <- tags$div(class="progress progress-striped active",
                       tags$div(class="bar", style="width: 100%;"))
# Code for loading message
loadingMsg <- tags$div(class="modal", tabindex="-1", role="dialog", 
                       "aria-labelledby"="myModalLabel", "aria-hidden"="true",
                       tags$div(class="modal-header",
                                tags$h3(id="myModalHeader", "Loading...")),
                       tags$div(class="modal-footer",
                                loadingBar))
# The conditional panel to show when shiny is busy
loadingPanel <- conditionalPanel(paste("input.goButton …
Run Code Online (Sandbox Code Playgroud)

r shiny

38
推荐指数
3
解决办法
2万
查看次数

在直方图中添加一行

这是一个R问题.

我想在直方图中的平均值位置添加一条垂直线.

我的代码是:

abline(h=0,v=mg,col="red")#mg is the mean value.
Run Code Online (Sandbox Code Playgroud)

但是有两条线出来,除了我想要的一条线外,还有一条水平线和X轴显示出来.

如何只生成一条我想要的线(垂直线)?

非常感谢你的帮助!

r

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

当数据在不规则网格上时,如何使用ggplot2在地图上绘制轮廓?

对不起文本墙,但我解释了问题,包括数据,并提供一些代码:)

题:

我有一些气候数据,我想用R绘图.我正在使用不规则的277x349网格上的数据,其中(x =经度,y =纬度,z =观察).假设z是压力的量度(500 hPa高度(m)).我尝试使用包ggplot2在地图上绘制轮廓(或等压线),但由于数据的结构,我遇到了一些麻烦.

数据来自兰伯特共形投影上的规则,均匀间隔的277x349网格,对于每个网格点,我们具有实际的经度,纬度和压力测量值.它是投影上的常规网格,但如果我使用记录观测值的实际经度和纬度将数据绘制为地图上的点,我会得到以下结果:

地图1

我可以通过将最右边的部分向左翻译来使它看起来更好一点(也许这可以通过一些功能完成,但我手动完成)或忽略最右边的部分.这是右图翻译成左边的情节:

地图2

(旁边)为了好玩,我尽力重新应用原始投影.我有一些从数据源应用投影的参数,但我不知道这些参数是什么意思.另外,我不知道R如何处理投影(我确实阅读了帮助文件...),所以这个图是通过一些试验和错误产生的:

地图3

我尝试使用ggplot2中的geom_contour函数添加轮廓线,但它冻结了我的R.在对一小部分数据进行尝试之后,我发现在谷歌搜索之后ggplot抱怨因为数据是不规则的网格.我也发现这就是geom_tile无法正常工作的原因.我猜我必须使我的网格点均匀分布 - 可能是通过将其投影回原始投影(?),或者通过采样规则网格(?)或通过点之间的外推均匀地间隔我的数据(?).

我的问题是:

如何在地图上绘制轮廓(最好使用ggplot2)来绘制数据?

奖金问题:

如何将我的数据转换回Lambert共形投影上的常规网格?根据数据文件的投影的参数包括(mpLambertParallel1F = 50,mpLambertParallel2F = 50,mpLambertMeridianF = 253,角,La1 = 1,Lo1 = 214.5,Lov = 253).我不知道这些是什么.

如何将我的地图居中,以便不会剪切一侧(如第一张地图中)?

如何使地图的投影图看起来不错(没有不必要的地图部分)?我尝试调整xlim和ylim,但似乎在投影前应用了轴限制.

数据:

我将数据作为rds文件上传到Google云端硬盘上.您可以使用R中的readRDS函数读取文件.

lat2d:2d网格上观测的实际纬度

lon2d:2d网格上观测的实际经度

z500:观察到的高度(m),其中压力为500毫巴

dat:数据排列在一个漂亮的数据框中(对于ggplot2)

我被告知数据来自北美区域再分析数据库.

我的代码(远期):

library(ggplot2)
library(ggmap)
library(maps)
library(mapdata)
library(maptools)
gpclibPermit()
library(mapproj)

lat2d <- readRDS('lat2d.rds')
lon2d <- readRDS('lon2d.rds')
z500 <- readRDS('z500.rds')
dat <- readRDS('dat.rds')

# Get the map outlines
outlines <- as.data.frame(map("world", plot = FALSE, 
                              xlim = c(min(lon2d), max(lon2d)), 
                              ylim …
Run Code Online (Sandbox Code Playgroud)

geocoding r geospatial contour ggplot2

8
推荐指数
1
解决办法
5763
查看次数

是否有可能让RStudio显示自定义函数的函数参数和描述?

RStudio中的代码完成很棒,我真的很喜欢弹出窗口如何描述函数输入的参数.例如,如果有一个类型matrix(然后按"tab",matrix()则会显示该函数的参数列表以及输入的描述.说,nrow=选择,然后相邻的窗口将nrow输入描述为"所需的行数".

我可以让RStudio为我的自定义函数执行此操作吗?我是否必须创建一个包来实现这种效果?

假设我有一个充满自定义函数的文件myCustomFunctions.R,并且我将所有杂项辅助函数存储在那里.我希望能够为我的函数添加元数据,以便这个辅助窗口也描述我的函数输入.

r rstudio

8
推荐指数
1
解决办法
4210
查看次数

R编程:plyr如何使用ddply计算列中的值

我想总结一下我的数据的通过/失败状态,如下所示.换句话说,我想告诉每种产品/类型的通过和失败案例的数量.

library(ggplot2)
library(plyr)
product=c("p1","p1","p1","p1","p1","p1","p1","p1","p1","p1","p1","p1","p2","p2","p2","p2","p2","p2","p2","p2","p2","p2","p2","p2")
type=c("t1","t1","t1","t1","t1","t1","t2","t2","t2","t2","t2","t2","t1","t1","t1","t1","t1","t1","t2","t2","t2","t2","t2","t2")
skew=c("s1","s1","s1","s2","s2","s2","s1","s1","s1","s2","s2","s2","s1","s1","s1","s2","s2","s2","s1","s1","s1","s2","s2","s2")
color=c("c1","c2","c3","c1","c2","c3","c1","c2","c3","c1","c2","c3","c1","c2","c3","c1","c2","c3","c1","c2","c3","c1","c2","c3")
result=c("pass","pass","fail","pass","pass","pass","fail","pass","fail","pass","fail","pass","fail","pass","fail","pass","pass","pass","pass","fail","fail","pass","pass","fail")
df = data.frame(product, type, skew, color, result)
Run Code Online (Sandbox Code Playgroud)

以下cmd返回传递+失败案例的总数,但我想要传递和失败的单独列

dfSummary <- ddply(df, c("product", "type"), summarise, N=length(result))
Run Code Online (Sandbox Code Playgroud)

结果是:

        product type N
 1      p1      t1   6
 2      p1      t2   6
 3      p2      t1   6
 4      p2      t2   6
Run Code Online (Sandbox Code Playgroud)

希望的结果是

         product type Pass Fail
 1       p1      t1   5    1
 2       p1      t2   3    3
 3       p2      t1   4    2
 4       p2      t2   3    3
Run Code Online (Sandbox Code Playgroud)

我尝试过这样的事情:

 dfSummary <- ddply(df, c("product", "type"), summarise, Pass=length(df$product[df$result=="pass"]), Fail=length(df$product[df$result=="fail"]) )
Run Code Online (Sandbox Code Playgroud)

但显然这是错误的,因为结果是失败和传递的重要结果.

提前感谢您的建议!此致,里亚德.

r plyr

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

当数据在列表中时,我可以向量化代码吗?

我正在优化我的代码,我遇到了一些问题.我知道R中最大的速度来自矢量化代码而不是使用循环.但是,我在列表中有我的数据,我不确定我是否可以对代码进行矢量化.我已经尝试过使用这些apply函数(比如lapply,vapply),但我读到这些函数只是为了编写更干净的代码而实际上是在引擎盖下使用循环!

这是我的代码中的三个最大瓶颈,尽管我认为第一部分没有任何事情可做.

1)读取数据

我使用尺寸为277x349的1000个矩阵批量处理.这是我脚本中最大的瓶颈,但是我通过使用该doMC软件包利用该foreach功能的多个内核来缓解了这个问题.这导致包含1000个277x349矩阵的列表.

出于问题的目的,假设我们有1000个矩阵的列表277 x 349

# Fake data
l <- list()
for(i in 1:1000) {
  l[[i]] <- matrix(rnorm(277*349), nrow=277, ncol=349)
}
Run Code Online (Sandbox Code Playgroud)

2)瓶颈#1

我需要与一些参考矩阵(相同维度)进行比较.这导致将列表中的1000个矩阵与我的参考矩阵进行比较,得到1000个距离的向量.如果我知道矩阵具有相同的尺寸,我可以将此步骤向量化吗?

这是一些代码:

# The reference matrix
r <- matrix(rnorm(277*349), nrow=277, ncol=349)
# The number of non NA values in matrix. Do not need to worry about this...
K <- 277*349

# Make a function to calculate distances
distance <- function(xi, xj, K, na.rm=TRUE) {
  sqrt(sum((xi - …
Run Code Online (Sandbox Code Playgroud)

optimization r vectorization

6
推荐指数
1
解决办法
213
查看次数

函数返回data.table时是否复制?

我正在更新一组以前只接受data.frame对象来处理data.table参数的函数.

我决定使用R的方法调度来实现该函数,以便使用data.frames 的旧代码仍然可以使用更新的函数.在我的一个函数中,我接受一个data.frame输入,修改它,然后返回修改后的data.frame.我也创建了一个data.table实现.例如:

# The functions
foo <- function(d) {
  UseMethod("foo")
}

foo.data.frame <- function(d) {
  <Do Something>
  return(d)
}

foo.data.table <- function(d) {
  <Do Something>
  return(d)
}
Run Code Online (Sandbox Code Playgroud)

我知道这data.table可以通过在不复制的情况下进行更改来实现foo.data.table,并且在实现这一目 但是,我data.table在函数末尾返回对象,因为我希望我的旧脚本能够处理新data.table对象.这会复制data.table吗?我怎么检查?根据文档,必须非常明确地创建一个a的副本data.table,但在这种情况下我不确定.

当我不需要时,我想要返回一些东西data.tables:

我的旧脚本看起来像这样

someData <- read.table(...)
...
someData <- foo(someData)
Run Code Online (Sandbox Code Playgroud)

我希望脚本能够data.table通过更改数据摄取行来运行s.换句话说,我希望脚本只需更改someData <- read.table(...)即可工作someData <- fread(...).

r data.table

6
推荐指数
1
解决办法
688
查看次数

如何巧妙地将文本标签放置在 ggplot2 中不同大小的点旁边?

我正在尝试ggplot2在 R 中制作带标签的气泡图。这是简化的场景:

我有4个变量的数据帧:3定量变量,xy,和z,而另一个标签的点的变量,lab

我想做一个散点图,其中位置由x和确定y,点的大小由 确定z。然后我想将文本标签放置在点旁边(例如,在点的右侧)而不与点顶部的文本重叠。

如果点的大小没有变化,我可以尝试geom_text通过添加缩放常数(例如aes(x=x+1, y=y+1))来简单地修改图层的美感。但是,即使在这种简单的情况下,我也无法正确定位文本,因为这些点不随绘图的输出尺寸缩放。换句话说,点的大小在 500x500 绘图和 1000x1000 绘图中保持不变 - 它们不会随着输出绘图的尺寸而放大。

因此,我认为我必须通过输出图的大小(例如尺寸)来缩放标签的位置,或者我必须以ggplot某种方式获取点的半径并移动我的文本标签。有没有办法做到这一点ggplot2

这是一些代码:

# Stupid data
df <- data.frame(x=c(1,2,3), 
                 y=c(1,2,3), 
                 z=c(1,2,1),
                 lab=c("a","b","c"), stringsAsFactors=FALSE)

# Plot with bad label placement
ggplot(aes(x=x, y=y), data=df) + 
  geom_point(aes(size=z)) + 
  geom_text(aes(label=lab), 
            colour="red") +
  scale_size_continuous(range=c(5, 50), guide="none")
Run Code Online (Sandbox Code Playgroud)

编辑:我要提,我想hjustvjustgeom_text内,但它并没有产生预期的效果。

# Trying hjust and …
Run Code Online (Sandbox Code Playgroud)

r ggplot2

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

根据条件删除单元格

我在列A中列出了员工列表,以及他们在B列中的状态(从下拉菜单中选择"活动"或"非活动").它们位于名为"员工列表"的工作表中.

当员工的状态设置为"非活动"时,我希望自动将员工剪切并粘贴到另一个工作表.另一张被称为"杂项"

如果在状态设置为"非活动"时无法自动完成,那么我可以设置一个按钮来调用该工作表中的VBA命令,从列表中清除所有非活动员工并将其移动到另一个工作表.

excel vba excel-vba

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