我正在尝试在两个表之间进行复杂的非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) lm在lapply使用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与被发生冲突... …
我正在尝试使用spR 中的包完成的任务非常简单,但我正在尝试学习,sf因此我的问题。我试图在 R 中创建一个点的形状。我有很多点,所以它必须是有效的。我在这两个方面都成功了sp,sf但是 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) 我有一个闪亮的应用程序,它显示了一个散点图。闪亮的用户执行数据过滤,然后数据显示在绘图图中。有时,创建的数据将全部为负或全部为正,但我仍然希望绘制以显示原点 (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)
给出:
但我希望它最初看起来更像这样:
知道怎么做吗?
我正在使用 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
知道如何让它发挥作用吗?谢谢
我有简单的数据框,可以说:
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) 我试图用来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) 我正在使用该包构建静态地图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。我想设置颜色并且还有透明度。
知道怎么做吗?
我有一组丑陋而复杂的字符串,我必须拆分:
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'。
我试过从这个问题中 …
我真的很喜欢利用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却没有看到关于如何改变颜色的任何暗示.构建此图的实际功能是什么,我们如何调用它以及如何更改颜色?