小编Bas*_*ien的帖子

R中的Complexe非equi合并

我正在尝试在两个表之间进行复杂的非equi连接.我在最后一次使用R2016的演示中受到启发(https://channel9.msdn.com/events/useR-international-R-User-conference/useR2016/Efficient-in-memory-non-equi-joins-using-datatable这使我相信它将是data.table的合适任务.我的表1看起来像:

library(data.table)
sp <- c("SAB","SAB","SAB","SAB","EPN","EPN","BOP","BOP","BOP","BOP","BOP","PET","PET","PET")
dbh <- c(10,12,16,22,12,16,10,12,14,20,26,12,16,18)
dt1 <- data.table(sp,dbh)
dt1
     sp dbh
 1: SAB  10
 2: SAB  12
 3: SAB  16
 4: SAB  22
 5: EPN  12
 6: EPN  16
 7: BOP  10
 8: BOP  12
 9: BOP  14
10: BOP  20
11: BOP  26
12: PET  12
13: PET  16
14: PET  18
Run Code Online (Sandbox Code Playgroud)

这是dbh的树木列表.我的第二个表(下面)给出了一个通用表,它为每个树种提供了一系列dbh来对大小类或树进行分类:

gr_sp <- c("RES","RES","RES","RES","RES","RES", "DEC", "DEC", "DEC", "DEC", "DEC", "DEC")
sp <- c("SAB","SAB", "SAB", "EPN", "EPN", "EPN", "BOP", "BOP", "BOP", "PET", "PET", …
Run Code Online (Sandbox Code Playgroud)

r data.table

11
推荐指数
1
解决办法
2916
查看次数

使用`weights`参数在`lapply`中调用`lm`时出错

lmlapply使用weights参数调用时,我遇到了一种奇怪的行为.

我的代码包含一个公式列表,我在其中运行一个我调用的线性模型lapply.到目前为止,它正在运作:

dd <- data.frame(y = rnorm(100),
                 x1 = rnorm(100),
                 x2 = rnorm(100),
                 x3 = rnorm(100),
                 x4 = rnorm(100),
                 wg = runif(100,1,100))

ls.form <- list(
  formula(y~x1+x2),
  formula(y~x3+x4),
  formula(y~x1|x2|x3),
  formula(y~x1+x2+x3+x4)
)

res.no.wg <- lapply(ls.form, lm, data = dd)
Run Code Online (Sandbox Code Playgroud)

但是,当我添加weights参数时,我得到一个奇怪的错误:

res.with.wg <- lapply(ls.form, lm, data = dd, weights = dd[,"wg"])
Error in eval(extras, data, env) : 
  ..2 used in an incorrect context, no ... to look in
Run Code Online (Sandbox Code Playgroud)

这就像如果...lapply与被发生冲突... …

r lapply lm

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

使用 sf 快速制作 SpatialPointsDataFrame

我正在尝试使用spR 中的包完成的任务非常简单,但我正在尝试学习,sf因此我的问题。我试图在 R 中创建一个点的形状。我有很多点,所以它必须是有效的。我在这两个方面都成功了spsf但是 sf 方法很慢。作为sf.

我做了 3 个不同的函数,它们做同样的事情:

1) 100% sp

f_rgdal <- function(dat) {
  coordinates(dat) <- ~x+y
}
Run Code Online (Sandbox Code Playgroud)

2) 100% sf(可能不好...)

f_sf <- function(dat) {
  dat <- st_sfc(
    lapply(
      apply(dat[,c("x", "y")], 1, list), function(xx) st_point(xx[[1]])
      )
    )
}
Run Code Online (Sandbox Code Playgroud)

3)两者混合:

f_rgdal_sp <- function(dat) {
  coordinates(dat) <- ~x+y
  dat <- as(dat, "sf")
}
Run Code Online (Sandbox Code Playgroud)

如果我对它们进行基准测试,您会发现函数 2 和函数 3 都比函数 1 慢:

set.seed(1234)
dd <- data.frame(x = runif(nb_pt, 0, 100),
                 y …
Run Code Online (Sandbox Code Playgroud)

r r-sp r-sf

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

在 R 中制作绘图时,使绘图始终显示原点 (0,0)

我有一个闪亮的应用程序,它显示了一个散点图。闪亮的用户执行数据过滤,然后数据显示在绘图图中。有时,创建的数据将全部为负或全部为正,但我仍然希望绘制以显示原点 (0,0) 的方式定位。

例子:

dd <- data.frame(x=c(2,3,6,2), y=c(5,2,7,3))
plot_ly(data=dd, x=~x, y=~y, type="scatter", mode="markers")
Run Code Online (Sandbox Code Playgroud)

给出:

在此处输入图片说明

但我希望它最初看起来更像这样:

在此处输入图片说明

知道怎么做吗?

r plotly

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

在 Rstudio 中使用 bookdown::html_document2 添加目录

我正在使用 Rstudio 构建一个bookdown::html_document2,但我似乎无法设法使用 Rstudio 添加目录。

我发现这个问题(Bookdown: TOC with html_document2)是相关的,但是我Knit在使用命令行时使用 Rstudio 按钮编织我的文档。就我而言,它会产生错误:

Error in yaml::yaml.load(string, ...) : 
  Scanner error: mapping values are not allowed in this context at line 4, column 33
Calls: <Anonymous> ... parse_yaml_front_matter -> yaml_load_utf8 -> <Anonymous>
Execution halted
Run Code Online (Sandbox Code Playgroud)

要重现该错误,请尝试:

---
title: "main title"
author: "Me"
date: "September 26, 2018"
output: bookdown::html_document2:
  toc=TRUE
---


# title 1

# tt

# rr 

## rrr
Run Code Online (Sandbox Code Playgroud)

在 Rstudio 中并点击Knit

知道如何让它发挥作用吗?谢谢

r rstudio r-markdown bookdown

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

通过使用 dplyr 添加包含序列号的变量来扩展(爆炸?) data.frame

我有简单的数据框,可以说:

dd <- data.frame(id = letters[1:4], v1 = c(0.3,0.1,0.7,1.3))
dd
  id  v1
1  a 0.3
2  b 0.1
3  c 0.7
4  d 1.3
Run Code Online (Sandbox Code Playgroud)

对于该数据帧的每一行,我想通过添加一个给出数字序列的新变量来“分解”它。我成功地做到了这一点,但我的代码并不理想,而且很难消耗:

dd %>% 
  mutate("0"=0,"5"=5,"10"=10) %>% 
  reshape2::melt(id.vars=c("id", "v1")) %>% 
  select(-variable) 
   id  v1 value
1   a 0.3     0
2   b 0.1     0
3   c 0.7     0
4   d 1.3     0
5   a 0.3     5
6   b 0.1     5
7   c 0.7     5
8   d 1.3     5
9   a 0.3    10
10  b 0.1    10
11  c 0.7    10 …
Run Code Online (Sandbox Code Playgroud)

r dplyr

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

使用 xgboost 对 Tweedie 回归建模

我试图用来xgboost制作花呢模型,但是我收到一条模糊的错误消息。

这是一个可重现的示例:

准备数据:

library(xgboost)
library(dplyr)

set.seed(123)
xx <- rpois(5000, 0.02)
xx[xx>0] <- rgamma(sum(xx>0), 50)

yy <- matrix(rnorm(15000), 5000,3, dimnames = list(1:5000, c("a", "b", "c")))

train_test <- sample(c(0,1), 5000, replace = T)
Run Code Online (Sandbox Code Playgroud)

准备xgboost,这里最重要的是:objective = 'reg:tweedie'eval_metric = "tweedie-nloglik"tweedie_variance_power = 1.2

dtrain <- xgb.DMatrix(
  data = yy %>% subset(train_test == 0),
  label = xx %>% subset(train_test == 0)
)

dtest <- xgb.DMatrix(
  data = yy %>% subset(train_test == 1),
  label = xx %>% subset(train_test == …
Run Code Online (Sandbox Code Playgroud)

r xgboost tweedie

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

选择与 sf.colors 一起使用的颜色

我正在使用该包构建静态地图sf,我希望我的地图具有特定的颜色和透明度。我可以设法独立地做到这两点,但不能结合在一起。

library(sf)    
nc = st_read(system.file("gpkg/nc.gpkg", package="sf"), quiet = TRUE)
Run Code Online (Sandbox Code Playgroud)

我可以简单地将地图全部变成红色:

plot(nc["SID74"], col="red")
Run Code Online (Sandbox Code Playgroud)

产生: 在此输入图像描述

如果我想添加透明度,我必须更改col参数并传递给它一个sf.colors调用:

plot(nc["SID74"], col=sf.colors(n=1, alpha=0.3))
Run Code Online (Sandbox Code Playgroud)

产生:

在此输入图像描述

我有透明度,但它是默认的蓝色,我找不到将其更改为红色的选项?sf.colors。我想设置颜色并且还有透明度。

知道怎么做吗?

plot r r-sf

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

在空格处拆分 R 字符串,但当空格在单引号之间时不拆分

我有一组丑陋而复杂的字符串,我必须拆分:

vec <- c("'01'", "'01' '02'", 
         "#bateau", "#bateau #batiment",
         "#'autres 32'", "#'autres 32' #'batiment 30'", "#'autres 32' #'batiment 30' #'contenu 31'",
         "#'34'", "#'34' #'33' #'35'")
vec
[1] "'01'"                                      "'01' '02'"                                
[3] "#bateau"                                   "#bateau #batiment"                        
[5] "#'autres 32'"                              "#'autres 32' #'batiment 30'"              
[7] "#'autres 32' #'batiment 30' #'contenu 31'" "#'34'"                                    
[9] "#'34' #'33' #'35'" 
Run Code Online (Sandbox Code Playgroud)

我需要在有空格 ( ) 的任何地方拆分字符串,除非空格在'. 所以在上面的例子中,'01' '02'会变成'01''02'#'autres 32' #'batiment 30'会变成#'autres 32'#'batiment 30'

我试过从这个问题中 …

regex r

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

什么是这种情节,我该如何改变它的颜色

我真的很喜欢利用120+基本R plot函数的绘图方法,抛出随机对象并检查出来的内容.

这一次,我刚刚给一个基本的data.frame一个factor变量.我喜欢出来的情节,但我无法改变它的颜色.

制作情节:

library(dplyr)
set.seed(123)

dd <- data.frame(FF = cut(runif(1000,0,100), seq(0,100,10)),
                 XX = rnorm(1000, 10, 2)) %>% 
  group_by(FF) %>% 
  summarize(XX=mean(XX))
Run Code Online (Sandbox Code Playgroud)

用它绘图plot(dd)给出:

在此输入图像描述

我希望这些酒吧是黑色以外的其他颜色.我尝试了显而易见plot(dd, col="red")但它没有做任何事情.同样的事情fg或者bg,我也尝试过.

我看了看?plot.data.frame,并?plot.factor却没有看到关于如何改变颜色的任何暗示.构建此图的实际功能是什么,我们如何调用它以及如何更改颜色?

plot r

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

标签 统计

r ×10

plot ×2

r-sf ×2

bookdown ×1

data.table ×1

dplyr ×1

lapply ×1

lm ×1

plotly ×1

r-markdown ×1

r-sp ×1

regex ×1

rstudio ×1

tweedie ×1

xgboost ×1