我有一个包含序列1和0的向量.假设它的长度为166,它是
y <- c(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1, 1,1,1,1,1,0,1,1,0,1,0,1,0,0,0,0,0,1,0,0,0,1,1,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,0,1,1,0,1,1,1,0,0,0,0,0,1,1,1,1)
Run Code Online (Sandbox Code Playgroud)
现在我想从上面的向量中提取一个最长的可能的子向量,使它满足两个属性
(1)子矢量应从1开始,以1结束.
(2)它可以包含最多5%的子矢量总长度的零.
我从rle功能开始.它计算每一步的1和0.所以它会是这样的
z <- rle(y)
d <- data.frame(z$values, z$lengths)
colnames(d) <- c("value", "length")
Run Code Online (Sandbox Code Playgroud)
它给了我
> d
value length
1 1 22
2 0 1
3 1 13
4 0 1
5 1 2
6 0 1
7 1 1
8 0 1
9 1 1
10 0 5
11 1 1
12 0 3
13 1 2
14 0 1
15 1 1
16 0 1
17 1 …Run Code Online (Sandbox Code Playgroud) 我从这里下载了 netCDF 文件。它们的分辨率为 0.5*0.5。我想以更粗的 1*1 分辨率重新网格这些文件。我找到了一些链接。第一个链接讨论 R 中的重新网格,但不使用双线性插值。在第二个环节涉及双线性插值,但使用的气候数据运算符(到我不是很熟悉)。然后我遇到了一个 R 包HiClimR。在这个包中,一个命令 coarseR降低了数据的分辨率。我将 netCDF 文件转换为 excel 文件并使用coarseR. 但是得到结果后我发现这个命令实际上以某种方式跳过了经纬度并将分辨率降低到1 * 1。简而言之,我的问题是
(1)coarseR用于降低分辨率是否正确?(2) 如何将双线性变换用于我在 R 中的特定问题?
提前谢谢了。
我有两个数据框d1,d2分别为:
x y z
10 10 7
10 12 6
11 10 8
11 12 2
12 10 1
12 12 5
x y z
10 10 100
11 10 200
12 12 400
Run Code Online (Sandbox Code Playgroud)
我想要的东西:
x y z
10 10 100
10 12 6
11 10 200
11 12 2
12 10 1
12 12 400
Run Code Online (Sandbox Code Playgroud)
我真的很抱歉这个微不足道的问题,我无法得到答案.
众所周知,1提升到无穷大是数学中的一种不确定形式.这里有更多的讨论.
在R控制台中,
> (1)^(Inf)
[1] 1
Run Code Online (Sandbox Code Playgroud)
我认为它应该产生NaN.请解释此输出背后的逻辑.我在Windows 7平台(32位系统)上使用R版本3.1.2.
我有一个矩阵.以下是条件:
(1)在每列中消除四个或更多个连续零的值的总和.
(2)获取每列的最大值并将这些最大值存储在向量中
例:
v1 <- c(2,4,6,1,0)
v2 <- c(1,0,1,9,0)
v3 <- c(0,0,3,0,1)
v4 <- c(0,0,2,0,10)
v5 <- c(0,0,13,0,7)
v6 <- c(0,20,9,0,2)
mat1 <- rbind(v1, v2, v3, v4, v5, v6)
## Replace four or more zeros by NA
fill_NA <- function(X, zero_val=0, new_val= NA){
apply(X,2,function(x){
r <- rle(x)
r$values[ r$lengths > 3 & r$values == zero_val ] <- new_val
inverse.rle(r)
})
}
fill_NA(mat1)
mat2 <- fill_NA(mat1)
> mat2
[,1] [,2] [,3] [,4] [,5]
[1,] 2 4 6 1 0
[2,] …Run Code Online (Sandbox Code Playgroud) 我有从此处获得的netCDF文件,名称为precip.mon.total.v6.nc。我正在ncdfR中使用软件包打开和分析文件。
new <- open.ncdf("precip.mon.total.v6.nc")
> new
[1] "file precip.mon.total.v6.nc has 4 dimensions:"
[1] "lat Size: 360"
[1] "lon Size: 720"
[1] "nbnds Size: 2"
[1] "time Size: 1320"
[1] "------------------------"
[1] "file precip.mon.total.v6.nc has 1 variables:"
[1] "float precip[lon,lat,time] Longname:GPCC Monthly total of precipitation Missval:-9.96920996838687e+36"
Run Code Online (Sandbox Code Playgroud)
但是当我提取变量时,我得到了错误
> get.var.ncdf(new, "precip")
Error: cannot allocate vector of size 2.5 Gb
In addition: Warning messages:
1: In double(totvarsize) :
Reached total allocation of 2047Mb: see help(memory.size)
2: In …Run Code Online (Sandbox Code Playgroud)