我的问题类似于这个问题:如何更改list.files()的显示顺序:例如,基于文件的整个名称的一部分
但我的情况不同.我使用了提供的解决方案:
a=a[order(gsub('.*_(\\d{8})[.].*','\\1',a))]
Run Code Online (Sandbox Code Playgroud)
但是对我的情况不起作用,因为我的案例中的命名与该问题中提供的命名不同.
我在目录中有几个文件.文件的命名很复杂,例如:
file.img
file.img
Run Code Online (Sandbox Code Playgroud)
我想列出文件,以便我可以使用它们,似乎R按特定顺序列出它们.即使数据没有正确排序,R也会按字母顺序排序文件.例如,这两个文件名称:
如何告诉R更改list.files的默认显示,并 根据_yearmonthday 订购文件,这些文件仅表示所有文件中的yearmonthday:
列出R中的文件我们使用这个:
我用了:
mixsort
Run Code Online (Sandbox Code Playgroud)
但没有按我要求订购它们
你好,我在这里给出一个重现的例子.我有三个栅格,我把它们堆叠起来.我想用NA替换50以上的任何值,但是我收到一个错误:
r <- raster(nrows=10, ncols=10)
r <- setValues(r, 1:ncell(r))
r1 <- raster(nrows=10, ncols=10)
r1 <- setValues(r1, 1:ncell(r))
r2 <- raster(nrows=10, ncols=10)
r2 <- setValues(r2, 1:ncell(r))
St=stack(r,r1,r2)
NAvalue(St) <- >50
Error: unexpected '>=' in "NAvalue(St) = >="
Run Code Online (Sandbox Code Playgroud)
有什么帮助吗?谢谢
我正在绘制hovmoller三个栅格的图,但该函数在 x 轴上绘制纬度,在 y 轴上绘制时间。通常(更容易阅读)纬度位于 Y 轴上。可重现的例子:
library("rasterVis")
r <- raster(nrows=10, ncols=10)
r <- setValues(r, 1:ncell(r))
r1 <- raster(nrows=10, ncols=10)
r1 <- setValues(r1, 1:ncell(r))
r2 <- raster(nrows=10, ncols=10)
r2 <- setValues(r2, 1:ncell(r))
St=stack(r,r1,r2)
idx <- seq(as.Date('2008-01-15'), as.Date('2008-1-17'), 'day')
SISmm <- setZ(St, idx)
hovmoller(SISmm, contour=FALSE, panel=panel.levelplot.raster,
yscale.components=yscale.raster.subticks,
interpolate=TRUE, par.settings=RdBuTheme)
Run Code Online (Sandbox Code Playgroud)
这会产生:
所以我希望时间在 X 轴上,纬度在 Y 轴上!
我写了一个简单的函数,但我想知道为什么我得到NaNs作为结果.这是代码:
数据
en1=c(1,9,5,9,8,7)
en=c(1,5,4,9,3,7)
en2=c(1,4,5,4,8,7)
Run Code Online (Sandbox Code Playgroud)
功能:
跑:
err1(en,en1,en2)
Run Code Online (Sandbox Code Playgroud)
结果:
[1] NaN
Warning message:
In sqrt(mean(((pr - ob) * (ob - ref)), na.rm = na.rm)) : NaNs produced
Run Code Online (Sandbox Code Playgroud)
对此有任何想法
我有两个目录.我使用下面给出的代码来计算这些文件之间的空间相关性,并且它运行良好.所以基本上我想告诉R:即使两个像素之间存在NA(在两个文件中),它也应该忽略它,但计算其余的(11个像素).
for(i in 1:length(dir1)){
file_tot[,,i,1] <- dir1[i], numeric(), size = 4 , signed = T
file_tot[,,i,2] <- dir2[i], numeric(), size = 4 , signed = T
}
Run Code Online (Sandbox Code Playgroud)