我一直试图找到一种时间有效的方法来合并R中的多个光栅图像.这些是来自乞力马扎罗山南部地区的相邻ASTER场景,我的目标是将它们组合在一起以获得一个大图像.
这是我到目前为止所得到的(对象'ast14dmo'代表RasterLayer对象列表):
# Loop through single ASTER scenes
for (i in seq(ast14dmo.sd)) {
if (i == 1) {
# Merge current with subsequent scene
ast14dmo.sd.mrg <- merge(ast14dmo.sd[[i]], ast14dmo.sd[[i+1]], tolerance = 1)
} else if (i > 1 && i < length(ast14dmo.sd)) {
tmp.mrg <- merge(ast14dmo.sd[[i]], ast14dmo.sd[[i+1]], tolerance = 1)
ast14dmo.sd.mrg <- merge(ast14dmo.sd.mrg, tmp.mrg, tolerance = 1)
} else {
# Save merged image
writeRaster(ast14dmo.sd.mrg, paste(path.mrg, "/AST14DMO_sd_", z, "m_mrg", sep = ""), format = "GTiff", overwrite = TRUE)
}
}
Run Code Online (Sandbox Code Playgroud)
正如你猜测的那样,代码可行.但是,考虑到每个单个栅格对象大约70 …
我目前正在为GitHub上托管的R包编写文档.我knitr
与R Markdown一起使用来编写README文件.点击RStudio中的"Knit HTML"按钮会产生一个像我期望的那样的HTML.
但是,将README.rmd推送到GitHub会导致您在遵循上述链接时在下页部分中看到的内容.例如,最顶层的代码块在README.rmd文件中声明如下:
```{r global_options, include = FALSE}
library(knitr)
options(width = 120)
opts_chunk$set(fig.width = 12, fig.height = 8, fig.path = 'Figs/',
include = TRUE, warning = FALSE, message = FALSE)
```
Run Code Online (Sandbox Code Playgroud)
但是,include = FALSE
在这种情况下,第一行代码中的语句被忽略,并且应该隐藏的代码片段显示在引用的GitHub页面上.此外,结果(例如,从plot()
,head()
)不,尽管可视化opts_chunk$set(..., include = TRUE)
.
有没有人遇到类似的问题,我可以帮助我在GitHub上显示正确的README文档,即RStudio处理它的方式吗?
我正在学习使用传单包在 R 中编程。我想给图标一个角度,并尝试使用以下代码:
m <- leaflet()
m <- addTiles(m,urlTemplate = "http://xdworld.vworld.kr:8080/2d/Base/201310/{z}/{x}/{y}.png")
m = m %>% setView(127.074167,34.456806, zoom = 9)
arrowIcon <- makeIcon(
iconUrl = "arrow.png"
,iconWidth = 100, iconHeight = 100
,iconAnchorX = 25, iconAnchorY =25
)
arrowIcon <- makeIcon(
iconUrl = "ARROW_B2.png"
,iconWidth = 100, iconHeight = 100
,iconAnchorX = 25, iconAnchorY = 25
)
offset = 0.00 # zoom 10-> 0.03, 9->0.06, 8 -> 0.12, 7 -> 0.24
m_lat = 34.45 + offset
m_lon = 127.07 - offset …
Run Code Online (Sandbox Code Playgroud) 我希望下图中的 x 轴从 06:00 开始,到 22:00 结束,每 4 小时休息一次。但是,我无法弄清楚以下内容。
a) 如何使x轴从06:00开始,06:00之前没有任何空白。
b) 如何使x轴在22:00结束,22:00之后没有任何空白。现在甚至没有显示 22:00
c) 如何每 4 小时休息一次。
d) 如何为 y 轴分配标签(目前只是 X4,列名称)。
我尝试了几件事,但没有成功。一些示例数据:
range <- seq(as.POSIXct("2015/4/18 06:00"),as.POSIXct("2015/4/18 22:00"),"mins")
df <- data.frame(matrix(nrow=length(range),ncol=4))
df[,1] <- c(1:length(range))
df[,2] <- 2*c(1:length(range))
df[,3] <- 3*c(1:length(range))
df[,4] <- range
Run Code Online (Sandbox Code Playgroud)
重塑:
library(reshape2)
df2 <- melt(df,id="X4")
Run Code Online (Sandbox Code Playgroud)
图形:
library(ggplot2)
ggplot(data=df2,aes(x=X4,y=value,color=variable)) + geom_line()+
scale_y_continuous(expand=c(0,0)) +
coord_cartesian(xlim=c(as.POSIXct("2015/4/18 06:00:00"),as.POSIXct("2015/4/18 22:00:00")))
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
print()
在循环结构中使用 Python 的(或据我所知,任何其他控制台输出生成)函数并通过R 中的网状运行代码,输出仅在执行完成后打印。例如,采用以下循环,每次迭代后进入休眠状态 1.5 秒;循环结束后,运行号全部打印出来。将 Python 代码保存到单独的 .py 文件然后运行reticulate::py_run_file()
.
library(reticulate)
py_run_string("
import time
for i in range(5):
print(str(i))
time.sleep(1.5) # sleep for 1.5 sec
")
Run Code Online (Sandbox Code Playgroud)
有谁知道这种行为的来源,如果可能的话,如何规避它?
我想创建一个交互式条形图,让用户可以根据一系列值过滤观察结果,然后动态呈现所选时间段内每个类的计数。由于过滤后的数据需要可用于许多这样的图表,我认为串扰和plotly/ggplot的组合可能会证明是有价值的。
我在下面附加了一个 reprex,它使用共享数据和来自串扰的过滤功能来允许动态过滤部分。当我编织文档时,只要选择了全部范围的值(默认值),条形图就会很好地呈现。
但是,绘图区域对于任何其他区域都为空,即。用户调整范围。
我到底错过了什么?我认为ggplotly()
无法处理的完整共享数据集和过滤共享数据集之间一定存在差异。也许我可以遵循另一种方法来实现我的目标?
这是我的 .Rmd 文件的内容:
---
title: mpg class counts filtered by time period
output: html_document
---
```{r echo = FALSE, message = FALSE, warning = FALSE}
library(crosstalk)
library(plotly)
# Wrap data frame in SharedData
sd = SharedData$new(mpg)
# Create a filter input
filter_slider("Year", "Year", sd, column = ~ year, step = 1, width = 250)
# Render graph
bscols(
ggplotly(
ggplot(aes(x = class), data = sd) +
geom_bar() …
Run Code Online (Sandbox Code Playgroud) 我重新安装了最新版本的 R 和 R Studio,重新启动了我的电脑并下载了我需要的所有软件包 \xe2\x80\x93 devtools就是其中之一。然而,键盘短路Ctrl+Shift+L
停止工作。
devtools::load_all()
如果我在控制台中手动输入,它仍然有效。我该如何解决这个问题?
我的问题非常类似于最近发布在Stackoverflow上的一个遗憾的问题.我正在处理一个RasterStack
由十二层组成的对象(一年中每个月一个),我想复制这些层十次,最后RasterStack
组成120层,每12层相似(即层与图1相同的是,层13与层25相同,等等.
出于复制目的,让我们从raster
包中获取一个示例:
library(raster)
file <- system.file("external/test.grd", package = "raster")
s <- stack(file, file, file, file, file, file, file, file, file, file, file, file)
stack(s, s, s, s, s, s, s, s, s, s)
class : RasterStack
dimensions : 115, 80, 9200, 120 (nrow, ncol, ncell, nlayers)
resolution : 40, 40 (x, y)
extent : 178400, 181600, 329400, 334000 (xmin, xmax, ymin, ymax)
coord. ref. : +init=epsg:28992 +towgs84=565.237,50.0087,465.658,-0.406857,0.350733,-1.87035,4.0812 +proj=sterea +lat_0=52.15616055555555 +lon_0=5.38763888888889 +k=0.9999079 +x_0=155000 …
Run Code Online (Sandbox Code Playgroud) 我正在使用两个RasterStack对象,每个对象由十个层组成,代表单个时间步.
# Mock data
pred.rst.stck <- do.call("stack", lapply(seq(10), function(i) {
pred.rst <- raster(nrows = 15, ncols = 15, xmn= 0, xmx = 10, ymn = 0, ymx = 10)
pred.rst[] <- rnorm(225, 50, 10)
return(pred.rst)
})
resp.rst.stck <- do.call("stack", lapply(seq(10), function(i) {
resp.rst <- raster(nrows = 10, ncols = 10, xmn = 0, xmx = 10, ymn = 0, ymx = 10)
resp.rst[] <- rnorm(100, 50, 10)
return(resp.rst)
})
Run Code Online (Sandbox Code Playgroud)
pred.rst.stck
用作预测变量resp.rst.stck
集和响应变量集.对于预测器RasterStack的每个单个单元格,我想在响应RasterStack的每个单元格上拟合线性模型,提取每个拟合模型的相应R平方并将它们相加.简而言之,这是迄今为止使用R parallel
包的最快方法:
# Parallelization
library(parallel)
n.cores <- …
Run Code Online (Sandbox Code Playgroud) 假设我想在xyplot
没有明确指定轴限制的情况下创建一个普通的,那么轴限制是如何计算的?
以下代码行生成一个简单的散点图。但是,轴限制的范围并不完全在 1 到 10 之间,而是略微扩展到左侧和右侧以及顶部和底部(大约 0.5)。
library(lattice)
xyplot(1:10 ~ 1:10, cex = 1.5, pch = 20, col = "black",
xlab = "x", ylab = "y")
Run Code Online (Sandbox Code Playgroud)
有没有办法确定轴在每个站点上扩展的因子,例如使用trellis.par.get
?执行上述xyplot
命令后,我已经尝试了以下操作:
library(grid)
downViewport(trellis.vpname(name = "figure"))
current.panel.limits()
$xlim
[1] 0 1
$ylim
[1] 0 1
Run Code Online (Sandbox Code Playgroud)
不幸的是,面板限制作为归一化父坐标返回,这使得无法获得“真实”限制。任何建议将不胜感激!
更新:
使用 base-R plot
,默认情况下,数据范围(以及轴限制)在每侧扩展 4%,请参阅?par
。但是这个因素似乎不适用于“格子”对象。所以我正在寻找的是类似于在par
.