小编jba*_*ums的帖子

从相关矩阵生成协方差矩阵

我有一个相关矩阵:

a <- matrix(c(1, .8, .8, .8, 1, .8, .8, .8, 1), 3)

##      [,1] [,2] [,3]
## [1,]  1.0  0.8  0.8
## [2,]  0.8  1.0  0.8
## [3,]  0.8  0.8  1.0
Run Code Online (Sandbox Code Playgroud)

我现在想从相关矩阵创建一个协方差矩阵.如何在R中完成?

我试过了:

e1.sd <- 3
e2.sd <- 10
e3.sd <- 3
e.cov <- a * as.matrix(c, e1.sd, e2.sd, e3.sd) %*% t(as.matrix(c(e1.sd, e2.sd, e3.sd)))
Run Code Online (Sandbox Code Playgroud)

但我得到错误:

Error in a * as.matrix(c, e1.sd, e2.sd, e3.sd) %*% t(as.matrix(c(e1.sd,  : 
  non-conformable arrays
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

r

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

如何在R中使用layout()函数?

我只是举了一个例子,它产生了四个与该layout功能相结合的图.但是,我无法弄清楚内部矩阵如何layout()连接到这些图的布局.

layout(matrix(c(1, 1, 1,
                2, 3, 4,
                2, 3, 4), nr=3, byrow=T))
hist(rnorm(25), col="VioletRed")
hist(rnorm(25), col="VioletRed")
hist(rnorm(25), col="VioletRed") 
hist(rnorm(25), col="VioletRed")
Run Code Online (Sandbox Code Playgroud)

plot r

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

使用字符串作为列名时如何使用dplyr :: arrange(desc())?

如何使用dplyr::arrange(dplyr::desc())并传入字符串作为列名?

这是一个示例数据集:

df <- data.frame(a = 1:3, b = 3:1)
Run Code Online (Sandbox Code Playgroud)

有效的例子:

df %>% dplyr::arrange(b)
df %>% dplyr::arrange_("b")
df %>% dplyr::arrange(dplyr::desc(b))
Run Code Online (Sandbox Code Playgroud)

但我似乎无法使用字符串既arrangedesc,这是两个版本,我想,不工作:

df %>% dplyr::arrange(dplyr::desc("b"))
df %>% dplyr::arrange_(dplyr::desc("b"))
Run Code Online (Sandbox Code Playgroud)

谢谢!

r dplyr

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

使用dplyr过滤掉包含字符的列

我有一个大型数据框,我想使用dplyr我最近发现的优秀软件包(Wickham).我想过滤掉包含字符的列.这可能吗?

例如,在包中的flights数据集中nycflights13,如何过滤掉具有类的列character

library(nycflights13)
data(flights)
str(flights)
Classes ‘tbl_df’, ‘tbl’ and 'data.frame':   336776 obs. of  16 variables:
 $ year     : int  2013 2013 2013 2013 2013 2013 2013 2013 2013 2013 ...
 $ month    : int  1 1 1 1 1 1 1 1 1 1 ...
 $ day      : int  1 1 1 1 1 1 1 1 1 1 ...
 $ dep_time : int  517 533 542 544 554 554 555 557 …
Run Code Online (Sandbox Code Playgroud)

r dplyr

9
推荐指数
4
解决办法
1805
查看次数

根据匹配的模式替换匹配项

给定一组正则表达式,是否有一种简单的方法来匹配多个模式,并根据匹配的模式替换匹配的文本?

例如,对于以下数据x,每个元素以数字或字母开头,并以数字或字母结尾.让我们称这些模式num_num(以数字开头,以数字结尾),num_let(以数字开头,以字母结尾)let_num,和let_let.

x <- c('123abc', '78fdsaq', 'aq12111', '1p33', '123', 'pzv')
type <- list(
  num_let='^\\d.*[[:alpha:]]$',
  num_num='^\\d(.*\\d)?$',
  let_num='^[[:alpha:]].*\\d$',
  let_let='^[[:alpha:]](.*[[:alpha:]])$'
)
Run Code Online (Sandbox Code Playgroud)

要用它后面的模式名称替换每个字符串,我们可以这样做:

m <- lapply(type, grep, x)
rep(names(type), sapply(m, length))[order(unlist(m))]
## [1] "num_let" "num_let" "let_num" "num_num" "num_num" "let_let"
Run Code Online (Sandbox Code Playgroud)

有更有效的方法吗?


gsubfn

我知道gsubfn我们可以同时替换不同的比赛,例如:

library(gsubfn)
gsubfn('.*', list('1p33'='foo', '123abc'='bar'), x)
## [1] "bar"     "78fdsaq" "aq12111" "foo"     "123"     "pzv"
Run Code Online (Sandbox Code Playgroud)

但我不确定替换是否可以依赖于匹配模式而不是匹配本身.


stringr

str_replace_all不能很好地使用这个例子,因为迭代地将匹配替换为模式,我们最终会被覆盖的所有内容let_let:

library(stringr)
str_replace_all(x, setNames(names(type), unlist(type)))
## …
Run Code Online (Sandbox Code Playgroud)

regex string r substitution

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

传递超过23个输入文件时gdal_calc amin失败

我编写了一个R函数,gdal_calc.py用于计算RasterStack(一系列输入栅格文件)的像素值最小值.我这样做是因为它比raster::min大型栅格更快.该函数最多可以存储23个文件,但在传递24个或更多文件时会抛出警告,返回填充了零的输出栅格.

由于R只是准备系统调用python gdal_calc.py,这个问题不是R特有的,我鼓励python/numpy aficionados继续阅读.

这是功能.最终gdal_calc调用的结构显示在此帖子底部有问题的用法引发的警告消息中.

gdal_min <- function(infile, outfile, return_raster=FALSE, overwrite=FALSE) {
  require(rgdal)
  if(return_raster) require(raster)
  # infile:        The multiband raster file (or a vector of paths to multiple 
  #                 raster files) for which to calculate cell minima.
  # outfile:       Path to raster output file.
  # return_raster: (logical) Should the output raster be read back into R?
  # overwrite:     (logical) Should outfile be overwritten if it exists?
  gdal_calc <- Sys.which('gdal_calc.py')
  if(gdal_calc=='') …
Run Code Online (Sandbox Code Playgroud)

python numpy r raster gdal

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

将XY点添加到levelplot生成的栅格地图

我有raster使用rasterR中的包生成的映射.这些栅格图层可以使用rasterVis包的levelplot函数可视化:

levelplot(rasterstack, layout=c(1, 2), 
          col.regions=colorRampPalette(c('darkred', 'red3', 'orange2', 'orange', 
                                         'yellow', 'lightskyblue', 'steelblue3', 
                                         'royalblue3', 'darkblue')))
Run Code Online (Sandbox Code Playgroud)

现在,我想将xy cordinates定义的一些z值添加到levelplot映射中.包含z值的数据帧有4列.第1列和第2列包含x和y坐标,第3列包含布局(1,1)中的地图1的z值和布局(1,2)的第4列.

应该添加每个地图的点数,使得如果z <0.05,pch=2并且如果z> 0.05,则pch=3.

我在网上搜索并找到了Ripley的解决方案,但它在我的情况下不起作用:

levelplot(rcp852, xlab = "", ylab = "",
          panel = function(x, y, subscripts, ...) {
            panel.levelplot(x, y, subscripts, ...)
            panel.xyplot(topo$x,topo$y, cex = 0.5, col = 1)
          }
)
Run Code Online (Sandbox Code Playgroud)

我尝试了很多其他选项,但这些点与通过生成的地图不一致levelplot.

r points levelplot

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

R plot()以俄语生成日期标签

我正在使用俄语Win 8.1的机器上工作.

安装RStudio时我选择英语作为默认语言,但在处理日期(POSIXt)时,plot()在时间轴上给我一个带有俄文标签的输出.

我该如何解决?我想要英语.

提前致谢!

在此输入图像描述

plot datetime locale r

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

绘制一个颜色渐变的光栅在零附近发散

我正在尝试绘制具有正值和负值的地图.

所有正值都应该是红色,而负值应该是蓝色,零应该是白色,就像这个带有离散颜色的样本图一样在此输入图像描述

以下是我正在使用的代码:

library (rasterVis)
ras1 <- raster(nrow=10,ncol=10) 
set.seed(1) 
ras1[] <- rchisq(df=10,n=10*10) 
ras2=ras1*(-1)/2 
s <- stack(ras1,ras2) 
levelplot(s,par.settings=RdBuTheme())
Run Code Online (Sandbox Code Playgroud)

非常感谢您提供可以应用于其他绘图练习的通用解决方案.

maps r raster colorbar

8
推荐指数
2
解决办法
8949
查看次数

如何缩小图例框的内边距

我正在绘制如下图表.我用来生成图例的代码是

legend(4, 20, c("Placebo", "Progabide"), lty=1:2, pch=c(1,16), col=1:2, cex=0.8)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

问题是内边距(垂直方向)太大,我想减少它.我想缩小内部边缘的另一种方法是进一步减少"cex".但随后盒子里的文字也会变小.有没有办法减少盒子但不减少其内容.

r margins legend

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

标签 统计

r ×10

dplyr ×2

plot ×2

raster ×2

colorbar ×1

datetime ×1

gdal ×1

legend ×1

levelplot ×1

locale ×1

maps ×1

margins ×1

numpy ×1

points ×1

python ×1

regex ×1

string ×1

substitution ×1