小编sbg*_*sbg的帖子

如何获得两个不同情节的窗户

当我们有一个带有图的窗口时,有没有办法告诉R在新窗口中显示新的图?

plot r window

31
推荐指数
3
解决办法
4万
查看次数

如何识别矩阵中每行不是"NA"的列?

我有一个12行和77列的​​矩阵,但只是让我们使用:

p <- matrix(NA,5,7)  
p[1,2]<-0.3  
p[1,3]<-0.5  
p[2,4]<-0.9  
p[2,7]<-0.4  
p[4,5]<-0.6 
Run Code Online (Sandbox Code Playgroud)

我想知道每行哪些列不是"NA",所以我想得到的是:

[1] 2,3  
[2] 4  
[3] 0  
[4] 5  
[5] 0 
Run Code Online (Sandbox Code Playgroud)

但如果我这样做,> which(p[]!="NA")我会[1] 6 11 17 24 32

我尝试使用循环:

aux <- matrix(NA,5,7)  
for(i in 1:5) {  
    aux[i,]<-which(p[i,]!="NA")  
}
Run Code Online (Sandbox Code Playgroud)

但我只是得到一个错误: number of items to replace is not a multiple of replacement length

有办法做到这一点吗?提前致谢

r matrix

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

具有良好分辨率的图形用于打印和屏幕显示

我正在使用我的情节

dev.new(width=5.8, height=3) 
par(mfrow=c(1,3),mar=c(1,1,2,1),oma=c(4,1,2,0),mgp=c(3, 0.5, 0)) 
plot(...)
Run Code Online (Sandbox Code Playgroud)

并将它们粘贴并粘贴到Microsoft Word中.它们在Word中看起来非常好(我尝试了不同的宽度,直到找到一个效果很好的)但是当我打印它们时它们看起来很糟糕.经过一些网络搜索,我发现打印的分辨率至少应为300ppi.因此,在摆弄宽度和高度永恒之后,我出现了代码,使得图形看起来大小相同但分辨率更高:

png(file="mag_feb.png",width=1800,height=950,res=300)
Run Code Online (Sandbox Code Playgroud)

它们现在看起来很好看,但是它们在Word(屏幕上)看起来并不清晰.它的尺寸有问题吗?难道没有办法让图形看起来很好并且在屏幕上看起来很好吗?我已经花了几个小时用这个,想不出任何其他的尝试,所以任何帮助将非常感谢!

谢谢!

plot r resolution

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

如何为时间序列中的缺失数据创建"NA"

我有几个数据文件,如下所示:

X code year month day pp  
1 4515 1953     6   1  0  
2 4515 1953     6   2  0  
3 4515 1953     6   3  0  
4 4515 1953     6   4  0  
5 4515 1953     6   5  3.5
Run Code Online (Sandbox Code Playgroud)

有时会丢失数据,但我没有NA,行根本就不存在.我需要在数据丢失时创建NA.我虽然可以通过将其转换为动物园对象来确定何时发生,并检查严格的规律性(我之前从未使用过动物园),但我使用以下代码:

z.date<-paste(CET$year, CET$month, CET$day, sep="/")
z <- read.zoo(CET,  order.by= z.date )
reg<-is.regular(z, strict = TRUE)
Run Code Online (Sandbox Code Playgroud)

但答案总是如此!

谁能告诉我为什么不工作?或者甚至更好,告诉我一种在数据丢失时创建NA的方法(有或没有动物园包)?

谢谢

r time-series missing-data

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

如何计算r(动物园对象)中的自相关

我正在尝试使用以下方法检查动物园对象中的自动关联(包含多个列的月度数据):

acf(jan, plot=F)$acf[2]

但是我收到以下错误:

Error in na.fail.default(as.ts(x)) : missing values in object

为了简化,我只提取了一个我称之为"a"的列(所以现在我有一个带索引和数据的简单动物园对象),并使用:

acf(a)

但仍然得到相同的错误.不能在动物园对象中使用?

r

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

将日期分为年,月和日的不同列

我有动物园对象,看起来像:

头(OBS)

      Index pp
1932-01-01  0
1932-01-02  0.2
1932-01-03  0
Run Code Online (Sandbox Code Playgroud)

并且我想将索引拆分为3列(分别列中的年,月和日),因此我可以使用每月的每天进行一些分析ddply.

我不知道它是否有任何区别,但我的日期是使用以下方式创建的:

dates <- as.Date(CET[,1], "%d-%m-%Y")
obs <- xts(CET[,2], dates)
Run Code Online (Sandbox Code Playgroud)

其中CET是原始文件,第1列中的日期和第2列中的pp.

谢谢你的帮助!

r date

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

使用多重并行在foreach循环内循环

我有一个包含循环的函数

myfun = function(z1.d, r, rs){
  x = z1.d[,r]
  or.d = order(as.vector(x), decreasing=TRUE)[rs]
  zz1.d = as.vector(x)
  r.l = zz1.d[or.d]

  y=vector()
  for (i in 1:9)
  {
    if(i<9) y[i]=mean( x[(x[,r] >= r.l[i] & x[,r] < r.l[i+1]),r] ) else{
      y[i] =  mean( z1.d[(x >= r.l[9]),r] )}
  }
  return(y)
}
Run Code Online (Sandbox Code Playgroud)

rs是数字向量,z1.d是动物园,y也是数字向量.

当我尝试在并行循环中运行函数时:

cls = makePSOCKcluster(8)
registerDoParallel(cls)

rlarger.d.1  = foreach(r=1:dim(z1.d)[2], .combine = "cbind") %dopar% {    
  myfun(z1.d, r, rs)}

stopCluster(cls)
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

Error in { : task 1 failed - "incorrect number of dimensions"
Run Code Online (Sandbox Code Playgroud)

我不知道为什么,但我意识到如果我从我的函数中取出循环它不会给出错误.

此外,如果我使用%do%而不是%dopar%运行完全相同的代码(因此不能并行运行),它可以正常工作(缓慢但没有错误).

编辑:这里要求的是参数的示例: …

foreach r doparallel

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

如何在具有多个列的zoo对象中使用`apply.monthly`

我有一个名为pp的动物园对象,包含每日数据和77列,如下所示:

            X02R X03N X04K X04N X04R X06I X06N X08J X08P X09O X11O X12L X14N X15G X16K  (...)
1961-01-01  8.3  5.2  3.2  0.0  8.7  5.2 15.0  7.2 11.5 13.0  0.0  4.9  0.0  2.9  6.0   
1961-01-02  1.1  3.2 10.0  0.0  0.0  3.5  0.0  8.7  0.4  1.2  0.0  0.4  0.0  3.2  0.2    
1961-01-03 12.0  4.2 50.5  0.0  9.0 38.5 15.0 31.7  1.7  8.7  9.0 69.2  4.2 22.2  9.2 
(...)  
Run Code Online (Sandbox Code Playgroud)

我想用到apply.monthly每一列,所以最后我仍然会有77列,但每月数据而不是每日数据.我试过, apply.monthly(pp, FUN=sum)但结果是一个只有一列的动物园对象(我想是添加所有列).

我也试了一个循环:

for (i in 1:77) { mensal<-apply.monthly(pp[,i], FUN=sum) …

r zoo

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

使用文件名命名列

我有数百个csv文件(R中的zoo对象),有2列:

"Index","pp"
1951-01-01,22.9
1951-01-02,4.3
1951-01-03,4.6

我希望第二列具有每个文件的名称.例如,当文件名是02O_zoo.csv我希望第二列是"02O"而不是"pp".这样做有自动方式吗?

谢谢

filenames r zoo

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

使用"订单"时删除NA

我有这个庞大的数据矩阵,包括年,月,日和降水的列,我需要订购,当降水量为NA时也会删除该行(在每个月的第31天,只有30天和Februaries. ..).在查阅了r帮助文件后,我使用了以下代码:

dat<- aa[order(aa$year, aa$month, aa$day, na.last=NA),] 
Run Code Online (Sandbox Code Playgroud)

它完美地订购了我的数据,但我仍然拥有所有的NAs ...任何人都可以告诉我它为什么不起作用?

谢谢

> head(dat)
    code year month                  station ALTITUD   PROV LONGITUD LATITUD day P1 id
1.1 3059 1940    11 ALBALATE DE LAS NOGUERAS     855 CUENCA   216372  402200   1  0  1
1.2 3059 1940    11 ALBALATE DE LAS NOGUERAS     855 CUENCA   216372  402200   2  0  1
1.3 3059 1940    11 ALBALATE DE LAS NOGUERAS     855 CUENCA   216372  402200   3  0  1
1.4 3059 1940    11 ALBALATE DE LAS NOGUERAS     855 CUENCA   216372  402200 …
Run Code Online (Sandbox Code Playgroud)

r

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

标签 统计

r ×10

plot ×2

zoo ×2

date ×1

doparallel ×1

filenames ×1

foreach ×1

matrix ×1

missing-data ×1

resolution ×1

time-series ×1

window ×1