我在R中编写一个函数,从netCDF文件中提取一些空气质量建模数据.我安装了包"ncdf".
为了让其他用户或我自己选择从netCDF文件中提取哪些变量,我想提取文件中所有变量的名称,这样我就可以在一个简单的列表中而不仅仅是print.ncdf()文件中提供很多信息.这有什么办法吗?
我尝试了ncdf对象unlist()的var字段,但它似乎也返回了内容...
我google搜索堆栈*溢出*但似乎没有找到答案,所以非常感谢你的帮助.
提前谢谢了.
我是R的数据分析新手.我最近得到了一个预先格式化的环境观测模型数据集,其示例子集如下所示:
date site obs mod site obs mod
2000-09-01 00:00:00 campus NA 61.63 city centre 66 56.69
2000-09-01 01:00:00 campus 52 62.55 city centre NA 54.75
2000-09-01 02:00:00 campus 52 63.52 city centre 56 54.65
Run Code Online (Sandbox Code Playgroud)
基本上,数据包括每小时观察到的时间序列和在"重复列"中不同位置的污染物模型浓度,即站点 - 天然 - 模型(在示例中,我仅显示了总共75个站点中的2个).我将这个"宽"数据集作为数据框读取,并希望将其重塑为"较窄"格式,如下所示:
date site obs mod
2000-09-01 00:00:00 campus NA 61.63
2000-09-01 01:00:00 campus 52 62.55
2000-09-01 02:00:00 campus 52 63.52
2000-09-01 00:00:00 city centre 66 56.69
2000-09-01 01:00:00 city centre NA 54.75
2000-09-01 02:00:00 city centre 56 54.65
Run Code Online (Sandbox Code Playgroud)
我相信我应该使用"reshape2"包来做到这一点.首先,我尝试融化然后dcast数据集:
test.melt <- …Run Code Online (Sandbox Code Playgroud) 我试图格式化在基本图形系统中创建的回归曲线的标签.基本上,此标签从变量中提取斜率,截距和r平方值.一个例子如下:
plot(rnorm(10), type = "n", xlim = c(0, 100), ylim = c(0, 100))
text(x = 0, y = 100, adj = c(0, NA), bquote(paste(y == .(a) * x + .(b), ", R"^2 == .(r2))), cex = 0.7)
Run Code Online (Sandbox Code Playgroud)
但是,这会产生一个看起来不太聪明的标签:
y = 1.159019x+-1.537708, R<sup>2</sup>=0.7924927
Run Code Online (Sandbox Code Playgroud)
我想要的是将数字四舍五入到小数点后第二位,即
y = 1.16x-1.54, R<sup>2</sup>=0.79
Run Code Online (Sandbox Code Playgroud)
我已经在两个帮助文档中查找了text(),bquote()但没有找到太多有用的信息.
我也曾尝试来包装.(a),.(b)并.(r2)在format()与参数nsmall = 2,但没有奏效.
有人可以帮我这个吗?提前谢谢了!
PS.我认为我的问题中有一个隐藏的任务.在上面的例子中,b是否定的.我知道我可能会"+"在我的表达式中忽略运算符,只是使用负号b来加入我的等式.但是,如果我不知道b事先的迹象怎么办?是否有一种巧妙的方法来形成标签,而不是用a来检查它,if()然后写两个非常不同的版本text()?再次感谢!