小编Jil*_*ina的帖子

使用R,使用"Generic Flat Binary,Byte Interleave By Line(BIL)"读取GIS数据

我想把以下GIS数据文件读入R:

一些数据规范在这里:

图像类型:通用平面二进制,字节交错(BIL)

投射:中断Goode Homolosine

我试图使用R包"raster",但失败了.

library(raster)
r <- raster(file.choose())

Error in .local(.Object, ...) : 
  `C:\global_forest_cover.img' not recognised as a supported file format.

Error in .rasterObjectFromFile(x, band = band, objecttype = "RasterLayer",  : 
  Cannot create a RasterLayer object from this file.
Run Code Online (Sandbox Code Playgroud)

那么,我该如何将这个GIS数据加载到R中呢?另外,将投影"Interrupted Goode Homolosine"转换为LongLat?

gis r raster

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

以任意方式排序列表

有没有办法以任意方式订购列表?例如,使用向量来排序列表:

> a
[[1]]
[1] 1

[[2]]
[1] "B"

[[3]]
[1] 2

> b = c(3, 1, 2)
> magicfunction(a, b)
[[1]]
[1] 2

[[2]]
[1] 1

[[3]]
[1] "B"
Run Code Online (Sandbox Code Playgroud)

r list

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

矩阵重组

我有一个6行矩阵和一个长度为6的向量,我想用它来重新组织我的矩阵.

我的新矩阵的第一行应该包含我的向量的第一个数值的位置行.

我的新矩阵的第二行应该包含我的向量的第二个数值的位置行.

这是一个例子:

> Matrix <- matrix(rnorm(30),nrow=6,ncol=5)
> Vector <- c(1,3,6,2,4,5)
Run Code Online (Sandbox Code Playgroud)

操作之后的实际第一行将位于第一行位置.在操作之后,实际的第二行将位于第三行位置.在操作之后,实际的第三行将位于第六行位置.等等....

我希望我的解释清楚得多!

为了使我的问题更清楚,我做了这个编辑

编辑:

> Matrix=matrix(c(1,2,3,4,5,6,7,8,9),nrow=3,ncol=3,byrow=T)
> Matrix

        [,1][,2][,3]
    [1,] 1    2   3
    [2,] 4    5   6  
    [3,] 7    8   9

> Vector=c(2,3,1)
Run Code Online (Sandbox Code Playgroud)

我想重新组织行以获得这个:

> NewMatrix=matrix(c(4,5,6,7,8,9,1,2,3),byrow=T)
> NewMatrix

        [,1][,2][,3]
    [1,] 4    5   6
    [2,] 7    8   9 
    [3,] 1    2   3
Run Code Online (Sandbox Code Playgroud)

第2行现在位于第1位,第3行现在位于第2位,第1行现在位于第3位.

r

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

函数未返回向量的问题

当谈到'R'时,我是新手,但我已经阅读了相当多的信息,我仍然不明白为什么我不能打印我在函数fn中返回的向量 - 我只是得到值"NULL".此函数的目标是从两个数组中获取值,将它们一起添加并将它们放在一个新数组中.我用print(test)命令检查数组中的数字是否正确地加在一起.也许我附加错了?我现在没有看到问题.

fn <- function(x,y) {
liste <- vector(mode = "numeric", length = 192)
k <- 0  
for (i in 1:(length(x))) {
    for (j in 1:(length(y))) {
        test<-x[i] + y[j]
        print(test)
        append(liste,test, after=k)
        k <- k +1
    }
}
return(liste)
}

event1 = c(0.0,5.0,10.0,12.0)
event2 = c(0.0,3.0,5.0,7.0)
event3 = c(6.0,8.0,10.0,10.0,12.0,13.0,13.0,14.0,16.0,17.0,17.0,20.0)

z <-fn(event2,event3)
names(z)
Run Code Online (Sandbox Code Playgroud)

r return vector append

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

两个字符串上的grep

我正在努力抓住一个字符串中的两个不同元素.

字符串看起来像这样,

str <- c('a_abc', 'b_abc', 'abc', 'z_zxy', 'x_zxy', 'zxy')
Run Code Online (Sandbox Code Playgroud)

我已尝试过不同的选项?grep,但我无法做到正确,做这样的事情,

grep('[_abc]:[_zxy]',str, value = TRUE)
Run Code Online (Sandbox Code Playgroud)

我想要的是,

[1] "a_abc" "b_abc" "z_zxy" "x_zxy"
Run Code Online (Sandbox Code Playgroud)

任何帮助,将不胜感激.

grep r

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

在R中使用regex来解析字符串

我有一个像这样的字符串:

vmstat_webserver01.20130102
Run Code Online (Sandbox Code Playgroud)

我需要使用正则表达式来选择"_"和"."之间的值.

我试过这个:

grep("(_.*)+.", name, value=TRUE)
Run Code Online (Sandbox Code Playgroud)

没有任何指针?

regex r

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

在计算点积时跳过NA

我通过将它们的投影减去前1-2个主成分来调整数据矩阵中的测量值.问题是,如果NA数据矩阵中只有一个(几千次测量几乎不可避免),内部产品操作x%*%y(我也试过sum(x*y),对于矢量x,y)返回NA.是否有一种简单的方法(即避免条件语句和循环)计算非NA值的内积,以便操作实际返回一些东西?

顺便说一句,我想避免只更换NA's 0',因为那时我必须在每个阶段重新规范化向量.

r

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

根据公共列组合R中的两个数据帧

我必须组合两个看起来像这样的数据帧我想在数据帧中采用公共列并将它们连接在一起.两个数据帧中的行将完全不同.

      a  b c 
row1  1  0 1      
row2  1  0 1
Run Code Online (Sandbox Code Playgroud)

另一个数据帧

     d a c f
row3 1 0 1 1
row4 1 1 0 0 
Run Code Online (Sandbox Code Playgroud)

我希望最终的数据集看起来像这样

        a c 
row1    1 1
row2    1 1
row3    0 1
row4    1 0
Run Code Online (Sandbox Code Playgroud)

这是来自两个数据帧的输入

dput(x1)
structure(list(d = c(1L, 1L), a = 0:1, c = c(1L, 0L), f = c(1L, 
0L)), .Names = c("d", "a", "c", "f"), row.names = c("row3", "row4"
), class = "data.frame")

dput(x2)
structure(list(a = c(1L, 1L), b = …
Run Code Online (Sandbox Code Playgroud)

merge r

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

以给定概率返回 TRUE 的函数

我正在寻找一个TRUE以给定概率返回的函数。就像是:

> proba = 2/3
> function(proba)
Run Code Online (Sandbox Code Playgroud)

TRUE以 2/3 的概率返回(或 1),以FALSE1/3 的概率返回(或 0)

我能想到的唯一计算方法是:

> sample(c(rep(1,ceiling(proba*100)),rep(0,ceiling((1-proba)*100))),1)
Run Code Online (Sandbox Code Playgroud)

但它只给出了一个近似值(而且看起来并不好看!),因为它只能处理小数位数有限的值。

r probability

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

按时间差列表查找日期

我在R中遇到了一个函数.我有一个日期向量,我正在寻找间距超过5天的日期.

这是我的矢量的一部分:

    [1] "2011-10-06" "2011-09-28" "2011-09-20" "2011-08-29" "2011-09-09" "2011-08-16"
    [7] "2011-08-05" "2011-07-28" "2011-07-18" "2011-07-06" "2011-06-27" "2011-06-17"
    [13] "2011-06-03" "2011-05-22" "2011-05-02" "2011-05-12" "2011-04-21" "2011-04-11"
    [19] "2011-04-01" "2011-03-23
Run Code Online (Sandbox Code Playgroud)

我知道如何在我的矢量中计算时差如下:

dates <- as.list( c( "2011-10-06","2011-09-28","2011-09-20","2011-08-29","2011-09-09","2011-08-16","2011-08-05","2011-07-28","2011-07-18","2011-07-06","2011-06-27","2011-06-17","2011-06-03","2011-05-22","2011-05-02","2011-05-12","2011-04-21","2011-04-11","2011-04-01","2011-03-23" ) )
diff( as.Date( unlist(dates) ) )
#Time differences in days
# [1]  -8  -8 -22  11 -24 -11  -8 -10 -12  -9 -10 -14 -12 -20  10 -21 -10 -10  -9
Run Code Online (Sandbox Code Playgroud)

我想要的是返回填写此标准的日期夫妇.例如,这对夫妇"2011-08-29","2011-09-09"是第一对在我的载体中满足"时差> 5天"标准的夫妇.

有没有办法归还计算出来的情侣?也许使用向量中的项目数?

谢谢你的帮助!

r

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

标签 统计

r ×10

append ×1

gis ×1

grep ×1

list ×1

merge ×1

probability ×1

raster ×1

regex ×1

return ×1

vector ×1