我有一个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
有办法做到这一点吗?提前致谢
我正在使用我的情节
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(屏幕上)看起来并不清晰.它的尺寸有问题吗?难道没有办法让图形看起来很好并且在屏幕上看起来很好吗?我已经花了几个小时用这个,想不出任何其他的尝试,所以任何帮助将非常感谢!
谢谢!
我有几个数据文件,如下所示:
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的方法(有或没有动物园包)?
谢谢
我正在尝试使用以下方法检查动物园对象中的自动关联(包含多个列的月度数据):
acf(jan, plot=F)$acf[2]
但是我收到以下错误:
Error in na.fail.default(as.ts(x)) : missing values in object
为了简化,我只提取了一个我称之为"a"的列(所以现在我有一个带索引和数据的简单动物园对象),并使用:
acf(a)
但仍然得到相同的错误.不能在动物园对象中使用?
我有动物园对象,看起来像:
头(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.
谢谢你的帮助!
我有一个包含循环的函数
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%运行完全相同的代码(因此不能并行运行),它可以正常工作(缓慢但没有错误).
编辑:这里要求的是参数的示例: …
我有一个名为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) …
我有数百个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".这样做有自动方式吗?
谢谢
我有这个庞大的数据矩阵,包括年,月,日和降水的列,我需要订购,当降水量为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 ×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