关于矢量之间的计算成对差异有几个帖子,但我找不到如何计算矢量中的所有差异.
说我有一个矢量,v.
v<-c(1:4)
Run Code Online (Sandbox Code Playgroud)
我想生成第二个向量,它是向量中所有成对差异的绝对值.相近:
abs(1-2) = 1
abs(1-3) = 2
abs(1-4) = 3
abs(2-3) = 1
abs(2-4) = 2
abs(3-4) = 1
Run Code Online (Sandbox Code Playgroud)
输出将是6个值的向量,这是我的6次比较的结果:
output<- c(1,2,3,1,2,1)
Run Code Online (Sandbox Code Playgroud)
R中有一个可以做到这一点的功能吗?
我正在尝试使用绘制空间栅格ggplot2.
require(raster)
require(ggplot2)
Run Code Online (Sandbox Code Playgroud)
下载数据,使用raster包加载为栅格.有关此数据产品的更多详细信息,请访问此处.然后将光栅转换为点,以便它可以很好地运行ggplot.
system('wget https://www.dropbox.com/s/7jsdqgc9wjcdznv/NADP_wet_deposition_nh4_0.5x0.5_grid_annual_R1.txt')
layer<- raster("path/to/raster/NADP_wet_deposition_nh4_0.5x0.5_grid_annual_R1.txt") #you need to specify your own path here, wherever the downloaded file is saved.
raster.points <- rasterToPoints(layer)
raster.points <- data.frame(raster.points)
colnames(raster.points) <-c('x','y','layer')
Run Code Online (Sandbox Code Playgroud)
现在ggplot2用来制作地图,然后躺在栅格上.
mp <- NULL
#grab US map and choose colors
map.US <- borders("usa", colour='white',fill='black', lwd=0.4)
mp <- ggplot(data=raster.points, aes(y=y, x=x))
mp <- mp + map.US
mp <- mp + geom_raster(aes(fill=layer))
mp <- mp + theme(axis.text.y=element_blank(),
axis.text.x=element_blank(),
axis.title.y=element_blank(),
axis.title.x=element_blank(),
axis.ticks=element_blank(),
panel.background …Run Code Online (Sandbox Code Playgroud) 我在R中有一个简单的通量模型.它归结为两个微分方程,模拟模型中的两个状态变量,我们称之为A和B.它们被计算为四分量通量flux1-flux4,5个参数p1-p5和第六个参数的简单差分方程of_interest,其可以取0-1之间的值.
parameters<- c(p1=0.028, p2=0.3, p3=0.5, p4=0.0002, p5=0.001, of_interest=0.1)
state <- c(A=28, B=1.4)
model<-function(t,state,parameters){
with(as.list(c(state,parameters)),{
#fluxes
flux1 = (1-of_interest) * p1*(B / (p2 + B))*p3
flux2 = p4* A #microbial death
flux3 = of_interest * p1*(B / (p2 + B))*p3
flux4 = p5* B
#differential equations of component fluxes
dAdt<- flux1 - flux2
dBdt<- flux3 - flux4
list(c(dAdt,dBdt))
})
Run Code Online (Sandbox Code Playgroud)
我想编写一个函数来取的导数dAdt相对于of_interest,派生方程设置为0,然后重新排列并求解的值of_interest.这将是of_interest最大化函数的参数的值dAdt.
到目前为止,我已经能够在稳定状态下解决模型,跨越可能的值 …
我使用 Jupyter Notebook 运行生物信息学分析,我喜欢它。但是,只有在我的个人计算机上运行它时,它才能真正发挥作用。但是,我经常使用具有多核的远程计算机进行分析以减少处理时间。我希望能够在我的个人计算机上使用 Jupyter Notebook 界面,而实际上一切都在远程计算机上运行。我通常通过 ssh 访问 shell 中的远程计算机并在命令行执行所有命令来执行此操作。我希望在我的个人计算机上的 Jupyter 笔记本上执行此操作,而不是从我个人计算机上的 shell 中执行此操作。相关的是我在远程计算机上没有 sudo 访问权限。
到目前为止,我已经安装miniconda并jupyter notebook在远程计算机上是这样的:
wget https://repo.continuum.io/miniconda/Miniconda-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh
Run Code Online (Sandbox Code Playgroud)
正确安装 conda 后,我使用以下行通过 miniconda 安装 jupyter notebook:
conda install jupyter
Run Code Online (Sandbox Code Playgroud)
这样就安装成功了。然后,我可以使用以下行在远程计算机上启动 jupyter notebook 会话:
jupyter notebook --no-browser
Run Code Online (Sandbox Code Playgroud)
到现在为止还挺好。我的下一个问题:如何将本地 jupyter notebook 连接到远程机器,以便我可以使用本地 jupyter notebook 在远程机器上执行命令?有一些文件在这里,但我一直在尝试不同的事物了几个小时,但都未能成功。
鉴于我已经走了这么远,任何人都可以提供一种直接的方法来连接到我的远程服务器吗?我觉得这应该只是在我的本地 Jupyter 笔记本中输入 url 地址和密码的问题(所有这些都可以通过 shell 中的 ssh 轻松完成)。
我有一个名称向量,其中一些名称有前导和尾随.字符,有些则没有.这是一个例子:
test <- c('.name.1.','name.2','.name.3.')
Run Code Online (Sandbox Code Playgroud)
我想有条件地删除.这些名称中的前导和尾随字符,以便返回
c('name.1','name.2','name.3')
Run Code Online (Sandbox Code Playgroud) 在考虑随机效应后,两个/更多的预测变量会变得更多/更少共线吗?
在我的情况下,我在建模之前测试了共线性,例如使用VIF,一切都检查出来.然而,不同模型的排名(使用IC)使我不确定它是否真的能够在预测变量之间分离.
有任何想法吗?
PS!那些代表比我更高的人可以添加一个更相关的标签,如共线性吗?
runjagsR的软件包非常棒。并行能力和使用extend.jags功能的能力让我的生活变得更好。然而,有时,在我运行模型后,我意识到老化阶段应该更长。如何从我的run.jags输出中修剪额外的样本,以便我可以重新估计我的参数分布并检查收敛?
jags.object <- run.jags(model, n.chains=3, data=data, monitor =c('a','b'), sample=10000)
Run Code Online (Sandbox Code Playgroud) 我想创建一个学习地点的地图。所有地点都在北部温带地区。为此,我首先加载世界地图,然后将y轴设置为仅包括北温带纬度(经度在23.5和66.5之间)。
#build map
world <- map_data("world") # we already did this, but we can do it again
map <- ggplot() + geom_polygon(data = world, aes(x=long, y = lat, group = group))
map <- map + coord_map(ylim = c(23.5, 66.5))
map
Run Code Online (Sandbox Code Playgroud)
我的计算集群最近更新为R版本R 3.6.0,并删除了旧版本的R。我一直在R 3.4.0中运行我的项目。我认为这很好,运行了一些代码,并在我的R 3.6.0会话中将输出保存为:
saveRDS(output, output.path)
Run Code Online (Sandbox Code Playgroud)
然后将此文件传输到另一台计算机上,在该计算机上进行交互式R使用。这台计算机正在运行R/3.4.0,并且不能选择更新R的版本。当我打开上面的文件时,出现以下错误:
readRDS(output.path)
Error in readRDS(output.path) : cannot read workspace version 3 written by R 3.6.0; need R 3.5.0 or newer
Run Code Online (Sandbox Code Playgroud)
真是可惜 我不是这两台计算机上的系统管理员,因此我不能仅同步版本。这是我的问题:
有没有一种方法可以saveRDS()在R 3.6.0中使用写入文件,从而使其在R 3.4.0环境中向后兼容?
假设我有一个看起来像这样的数据框
ca01<- c(1:10)
ca02<- c(2:11)
ca03<- c(3:12)
stuff.1<- rep('test',10)
other<- rep(9,10)
data<- data.frame(ca01,ca02,ca03,stuff.1,other)
Run Code Online (Sandbox Code Playgroud)
然后我创建一个包含列名的向量
samps<- colnames(data)
Run Code Online (Sandbox Code Playgroud)
然后我想过滤这个向量以只包含以前缀“ca”开头的项目。我不想通过编写专门删除这些的单独代码行来排除 stuff.1 和其他,所以像
samps<-samps[samps!='stuff.1']
samps<-samps[samps!='other']
Run Code Online (Sandbox Code Playgroud)
不会合适。
r ×9
ggplot2 ×2
bayesian ×1
calculus ×1
gis ×1
jags ×1
jupyter ×1
lme4 ×1
maximization ×1
mixed-models ×1
nlme ×1
optimization ×1
raster ×1
regex ×1
regression ×1
runjags ×1