小编Gre*_*gor的帖子

使用“apply”时,我可以只返回函数的一个值吗?

我不熟悉applyR 中的。当我尝试仅返回函数的一个值时,它无法返回该值。这个问题可能很容易解决,但我还没有解决。

例如,当我尝试使用函数sens.slope(From package trend) 时,它不会只返回一个数值。

> e <- matrix(1:50, nrow = 5)
> apply(e,2, sens.slope$estimates)
Error in sens.slope$estimates : 
  object of type 'closure' is not subsettable 
Run Code Online (Sandbox Code Playgroud)

还有其他解决方案吗?谢谢你!

r return-value apply

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

一致性矩阵

假设我有一个包含任意数量的行和列的数据集,如下所示。

tmp <- tibble(id = 1:10,
              v1 = c(0, 0, 0, 1, 1, 0, 0, 0, 0, 1),
              v2 = c(0, 0, 0, 1, 0, 0, 0, 0, 0, 1),
              v3 = c(0, 0, 0, 1, 0, 0, 0, 0, 1, 0),
              v4 = c(0, 0, 0, 1, 1, 0, 0, 0, 1, 0))
Run Code Online (Sandbox Code Playgroud)

每一行都是一个响应。受访者对特定问题的回答是是 (1) 或否 (0)。在这里,我们有 4 个问题。

将其转换为如下所示的一致性矩阵的最简单方法是什么:

   v1  v2  v3  v4
v1 3   2   1   1
v2 2   2   1   1
v3 1   1   2   2 …
Run Code Online (Sandbox Code Playgroud)

r tidyverse

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

如何使用POSIX轴将具有新数据的图层添加到ggplot?

我已经习惯了,如果我想给a添加一个点ggplot,它就可以了:

ggplot(mtcars, aes(x = disp, y = mpg)) + geom_point() +
    geom_point(x = 200, y = 20, size = 5, color = "blue")
Run Code Online (Sandbox Code Playgroud)

但是,如果涉及POSIX日期,我会遇到问题:

dat_1 <- data.frame(time = as.POSIXct(c("2010-01-01", "2010-02-01", "2010-03-01")),
                     y_1 = c(-1, 0, 1))
Run Code Online (Sandbox Code Playgroud)

当然,基本情节有效

(my_plot <- ggplot(dat_1, aes(x = time, y = y_1)) +
    geom_point())
Run Code Online (Sandbox Code Playgroud)

但添加另一层

my_plot + geom_point(x = as.POSIXct("2010-01-01"),
    y = 0, size = 5, color = "blue")
Run Code Online (Sandbox Code Playgroud)

返回错误

Error in Ops.POSIXt((x - from[1]), diff(from)) : 
  '/' not defined for "POSIXt" objects
Run Code Online (Sandbox Code Playgroud)

r ggplot2

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

行首的“+”号是什么意思?

RStudio 中的“+”号是什么意思?大多数行以开头,>但其他行以开头+(我认为是继续行)。我正在阅读一本书,它在不同的行上为函数编写参数,但我不知道该怎么做。

或者有时我会看到类似的代码

> mtcars %>%
+   group_by(cyl) %>%
+   summarize(mean(mpg))
Run Code Online (Sandbox Code Playgroud)

r rstudio

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

如何修复glm的截距值

这是我处理它的示例:

data2 = data.frame( X = c(0,2,4,6,8,10),
                    Y = c(300,220,210,90,80,10))
attach(data2)
model <- glm(log(Y)~X)
model

Call:  glm(formula = log(Y) ~ X)

Coefficients:
(Intercept)            X  
     6.0968      -0.2984  

Degrees of Freedom: 5 Total (i.e. Null);  4 Residual
Null Deviance:      7.742 
Residual Deviance: 1.509    AIC: 14.74
Run Code Online (Sandbox Code Playgroud)

我的问题是:

功能上有一个选项glm可以让我用我想要的值修复截距系数?并预测 x 值?

例如:我希望我的曲线以较高的“Y”值开始 ==> 我想改变截距 log(300)

r intercept glm coefficients

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

将特定颜色分配给特定值

我要求R制作一系列情节.但是,ggplot2分配给不同变量的颜色会因实际数据而异.我需要更多的一致性特别是我想:

四为红三为绿色两为黄色为白色

基于以前的答案,我怀疑我需要订购水平.有人可以帮我吗?

以下是一些示例数据:

df<-structure(list(`id` = structure(c(3L, 3L, 3L, 3L, 3L, 2L, 
                                  3L, 3L, 1L, 3L, 4L, 3L, 3L, 3L, 3L, 3L, 2L, 4L, 3L, 3L, 2L, 3L, 
                                  2L, 4L, 2L, 4L, 3L, 3L, 2L, 3L, 4L, 3L, 3L, 2L, 3L, 3L, 4L, 3L, 
                                  1L, 3L, 4L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L), .Label = c("ONE", 
                                                                                              "TWO", "THREE", "FOUR"), class = "factor"), NAME = c("0", "0.25", "0.5", 
                                                                                                                                          "0.75", "1", "1.25", "1.5", "1.75", "2", "2.25", "2.5", "2.75", 
                                                                                                                                          "3", …
Run Code Online (Sandbox Code Playgroud)

r ggplot2

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

如何在facet_grid中换行?

我有一个巨大的data.table,我想绘制每组的直方图.在下面的例子中,我想说每个"线"有6个图(所以最后一行只有两个图,对于st组).

我该怎么做呢?

library(ggplot2)
library(data.table)
DT <- data.table(Group = rep(letters[1:20], each = 200),
                 Value = rnorm(4000))

hist.plot <- ggplot(DT, aes(x = Value)) +
                    geom_histogram(binwidth = 0.3, colour = 'black')

hist.plot + facet_grid(. ~ Group)
Run Code Online (Sandbox Code Playgroud)

这会产生很长的"线"图,但我希望每行的图更少:在此输入图像描述

r ggplot2 data.table

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

当我提供CI值时,如何绘制置信区间

我不是根据实际数据绘图,我只有一个data.frame,列出x,y值以及上下自信区间.我想用自信的间隔绘制线图.我想绘制如下的东西:

在此输入图像描述

我怎么做?这是data.frame:

grp   x                y                se         conf.low        conf.high
 0    0   66.27373472086  1.51067072892736 63.3124335788501 69.2350358628699
 1    0 74.2148696059611  1.40010518400934 71.4703052207858 76.9594339911364
 0 0.67 69.3077020704515  1.31170050247573    66.7364334799 71.8789706610029
 1 0.67 76.3216788839049  1.20426555957627 73.9610102692502 78.6823474985597
 0    1 70.8020441978622  1.22261128345911 68.4054132705439 73.1986751251804
 1    1 77.3593610655788  1.11440617937562 75.1748398271279 79.5438823040297
 0 1.33 72.2963863252729   1.1412866614517 70.0591724644355 74.5336001861103
 1 1.33 78.3970432472526  1.03045308168746 76.3770915601266 80.4169949343786
 0 1.67 73.8360115474536  1.06749385699758 71.7434504636362 75.9285726312711
 1 1.67 79.4661703435226 0.951785143725553 77.6004279424212  81.331912744624
 0    2 75.3303536748644  1.00766551737773 73.3550714441075 77.3056359056212
 1    2 80.5038525251965 0.885018762433004 78.7689893139698 82.2387157364231 …
Run Code Online (Sandbox Code Playgroud)

r ggplot2 confidence-interval

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

geom_text 适用于 R 中的直方图?

想知道是否geom_text适用hist?尝试了以下代码,似乎没有效果。在为每个直方图桶绘制每个条时,我只想显示标签(属于特定直方图桶的元素数量)。任何解决方案表示赞赏。谢谢。

p <- hist(df$foo,
          main="title",xlab="foo")
p + geom_text()
Run Code Online (Sandbox Code Playgroud)

编辑 1,试过geom_bar,这是我的代码,它似乎工作不正常,因为我希望每个条上都标有一个数字。在图中,它只显示 2.5、5、7.5 和 10,我希望为每个条显示 1、2、3、...、9、10。

g <- ggplot(df, aes(df$foo))
g + geom_bar()
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

问候, 林

r histogram ggplot2

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

是否有必要保护.Call参数?

我有一堆Rcpp代码,我必须重写为一个无Rcpp的C/C++扩展(由于它的许可证),幸运的是它并没有像我担心的那样痛苦.但为了编写最干净的代码,我想确保我不会过度使用PROTECT/UNPROTECT.在写作R附加文档提到:"这不是一个好主意,然后只在PROTECT眼前的一切......"所以我想是尽职尽责的.

所以这是我想检查的事情.在阅读为R编写C扩展的所有示例时,我已经看到许多示例,其中作者保护传递函数的参数,如本文所述.

#include <R.h>
#include <Rdefines.h>
#include <string.h>
SEXP helloC1(SEXP greeting) {
  int i, vectorLength, stringLength;
  SEXP result;
  PROTECT(greeting = AS_CHARACTER(greeting));
  vectorLength = LENGTH(greeting);
  PROTECT(result = NEW_INTEGER(vectorLength));
  for (i=0; i<vectorLength; i++) {
    stringLength = strlen(CHAR(STRING_ELT(greeting, i)));
    INTEGER(result)[i] = stringLength;
  }
  UNPROTECT(2);
  return(result);
}
Run Code Online (Sandbox Code Playgroud)

SEXP问候作为一个论点传入,作者立即保护它.但是,从Writing R Extensions中我注意到了这一点:

对于R已经知道正在使用的对象,不需要保护.特别是,这适用于函数参数.

因此,为了进行健全性检查,有人可以告诉我,作者保护传入参数的代码示例是否可以减少?如果是这种情况,我将能够使我的代码更清洁.

c r

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