小编www*_*www的帖子

R:RStudio:如何让剪影图工作?

今天我已经意识到包装中的silhouette图形cluster无法正确显示RStudio.Google搜索显示其他人遇到此问题:

http://support.rstudio.org/help/discussions/problems/3094-plotsnot-showing-up-in-r-studio

作为R的新手,我不清楚这个问题是否已在这个问题得到解决!所以我的问题是:有没有办法让silhouette情节正确显示RStudio

谢谢你的帮助.

示例脚本:

library(cluster)
data(xclara)
km <- kmeans(xclara,3)
dissE <- daisy(xclara)
sk <- silhouette(km$cl, dissE)
plot(sk)
Run Code Online (Sandbox Code Playgroud)

r cluster-analysis r-daisy

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

多个(rasterVis)级别图

我非常绝望地尝试在一个地块上调整一个rasterstack的两个关卡.似乎rasterVis::levelplot没有par(mfrow = c(...))选择拆分窗格.使用两个rasterstacks的示例应在新的绘图窗口上并排排列:

f <- system.file("external/test.grd", package="raster")
r1 <- stack(raster(f),log(raster(f)))
r2 <- stack(raster(f)-500,raster(f)+500)

par(mfrow=c(2,2))
  levelplot(r1)
  levelplot(r2)
Run Code Online (Sandbox Code Playgroud)

在这里,levelplot(r1)正在全尺寸窗口上绘制,而levelplot(r2)不幸的是正在绘画levelplot(r1).

我试着玩,levelplotprint函数包装调用,这splitnewpage = false选项一样.不幸的是,我没有得到如何使用split正确的扭曲,所以我最终只有沮丧.

我非常感谢你的帮助,谢谢

和我

r levelplot rastervis

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

如何使用sf :: st_centroid计算多边形的质心?

我试图使用新的"sf"包来操纵R中的一些巴西人口普查数据.我能够导入数据,但是当我尝试创建原始多边形的质心时出现错误

library(sf)

#Donwload data  
filepath <- 'ftp://geoftp.ibge.gov.br/organizacao_do_territorio/malhas_territoriais/malhas_de_setores_censitarios__divisoes_intramunicipais/censo_2010/setores_censitarios_shp/ac/ac_setores_censitarios.zip'
download.file(filepath,'ac_setores_censitarios.zip')
unzip('ac_setores_censitarios.zip')
d <- st_read('12SEE250GC_SIR.shp',stringsAsFactors = F) 
Run Code Online (Sandbox Code Playgroud)

现在我尝试创建一个包含"几何体"列的质心的新几何列,但是会收到错误:

d$centroid <- st_centroid(d$geometry)
Warning message:
In st_centroid.sfc(d$geometry) :
  st_centroid does not give correct centroids for longitude/latitude data
Run Code Online (Sandbox Code Playgroud)

我怎么解决这个问题?

r polygon centroid r-sf

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

具有iid随机效应的泊松GLM的奇怪输出

我正在尝试在R中运行rjags(通过Rstudio)来估计模型的参数alpha&beta和超参数tau.nu:

y_i|x_i~pois(eta_i),
eta_i=exp(alpha + beta*x_i + nu_i),
nu_i~N(0,tau.nu)
Run Code Online (Sandbox Code Playgroud)

有我的代码:

#generating data
N = 1000
x = rnorm(N, mean=3,sd=1) 
nu = rnorm(N,0,0.01)
eta = exp(1 + 2*x + nu)
y = rpois(N,eta) 
data=data.frame(y=y,x=x)
###MCMC
library(rjags)
library(coda)
mod_string= "model {  
  for(i in 1:1000) {
    y[i]~dpois(eta[i])
    eta[i]=exp(alpha+beta*x[i]+nu[i])
    nu[i]~dnorm(0,tau.nu)
  }
  alpha  ~ dnorm(0,0.001)
  beta  ~ dnorm(0,0.001) 
  tau.nu ~ dgamma(0.01,0.01) 
}"

params = c("alpha","beta","tau.nu")

inits = function() {
  inits = list("alpha"=rnorm(1,0,100),"beta"=rnorm(1,0,80),"tau.nu"=rgamma(1,1,1))
}
mod = jags.model(textConnection(mod_string), data=data, inits=inits, n.chains =3)
update(mod,5000)
mod_sim = coda.samples(model=mod, …
Run Code Online (Sandbox Code Playgroud)

r jags rjags

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

R包pscl中的ideal()不会产生可重复的结果

我正在使用psclR中的软件包并尝试使其生成可测试/可重现的结果.我已经看到了在底层的C代码,它看起来好像GetRNGstate()PutRNGstate()被称为在正确的地方,但它似乎是不可能从MCMC模型重复输出.

我已经simulationResultSoDA包中打包了函数,因此我可以验证R端的每个模拟R的启动状态.

library(pscl)
library(SoDA)
run1 <- simulationResult(
  ideal(s109, 
    normalize=TRUE,
    maxiter = 500,
    thin = 10,
    burnin = 0),
  seed = 42)

run2 <- simulationResult(
  ideal(s109, 
    normalize=TRUE,
    maxiter = 500,
    thin = 10,
    burnin = 0),
  seed = 42)
Run Code Online (Sandbox Code Playgroud)

我们可以验证起始状态至少在R方面是相同的:

all.equal(run1@firstState, run2@firstState)
Run Code Online (Sandbox Code Playgroud)

但输出是不同的:

all.equal(run1@result$xbar, run2@result$xbar)
Run Code Online (Sandbox Code Playgroud)

我可以增加迭代次数,但如果RNG状态得到传播则这并不重要.我错过了一些非常简单的事吗?谢谢.

编辑:我还应该注意all.equal(run1@lastState, run2@lastState)(每次运行的结束状态)应该是相同的但它们最终会有所不同.我的猜测是,被C称为R RNG功能外应急的一些源被撞击的倍那些RNG函数被调用.好奇.

EDIT2

我还应该在OS X 10.8.4上使用pscl 1.04.4添加我的R 3.0.1.

r mcmc pscl

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

sankey图中的标签大小(riverplot包)

使用案例: 我使用riverplot包绘制sankey图表.我需要调整图中节点标签的文本大小.在我的情况下,默认大小太大了.

问题,我已经尝试过了: 不幸的是,包不适用于cex参数.该软件包的开发人员没有向我提供指导.r可 重现的例子:

library(riverplot)

plot(riverplot.example())
Run Code Online (Sandbox Code Playgroud)

产生:

在此输入图像描述

题:

如何将节点标签(A,B,...)调整为比默认值更小或更大的尺寸?

visualization r sankey-diagram riverplot

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

在data.table上使用geosphere distm函数来计算距离

我创建了一个data.table,它有6列.我的data.table有一个列可以计算两个位置:位置1和位置2.我正在尝试使用distm函数来计算每行上位置之间的距离,从而创建第7列.geosphere包中的distm包需要针对每个纬度/长度组合使用两个不同的向量.我的下面的代码不起作用,所以我试图弄清楚如何为函数提供向量.

LOC_1_ID LOC1_LAT_CORD LOC1_LONG_CORD LOC_2_ID LOC2_LAT_CORD LOC2_LONG_CORD
 1       35.68440        -80.48090        70624    34.86752   -82.46632
 6       35.49770        -80.62870        70624    34.86752   -82.46632
10       35.66042        -80.50053        70624    34.86752   -82.46632
Run Code Online (Sandbox Code Playgroud)

假设res保存data.table,下面的代码不起作用.

 res[,DISTANCE := distm(c(LOC1_LAT_CORD, LOC1_LONG_CORD),c(LOC2_LAT_CORD, LOC2_LONG_CORD), fun=distHaversine)*0.000621371]
Run Code Online (Sandbox Code Playgroud)

如果我要拉出每个向量,该函数工作正常.

loc1 <- res[LOC1_ID == 1,.(LOC1_LAT_CORD, LOC1_LONG_CORD)]
loc2 <- res[LOC2_ID==70624,.(LOC2_LAT_CORD, LOC2_LONG_CORD)]
distm(loc1, loc2, fun=distHaversine)
Run Code Online (Sandbox Code Playgroud)

真的,我的问题是当该函数需要向量作为参数时,如何应用函数来选择data.table中的列.

r data.table geosphere

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

R使用包地圈计算地球上2个点之间的距离

我的问题是基于这个问题.使用它我写下面的代码,其中第一组坐标是纽约LGA机场,而第二组坐标是纽约EWR机场.我得到了答案33713.那是英里还是公里?一个快速的谷歌检查说,距离应该是33英里(但它不是直线/弧距离:(这是一个公路的距离).包文件说答案是以米为单位.请澄清.这是一个给出2个坐标找到地球上距离的好方法?我怎样才能在里程中找到答案?

library(geosphere)
distm (c(40.777250, -73.872610), c(40.6895, -74.1745), fun = distHaversine)
         [,1]
[1,] 33713.61
Run Code Online (Sandbox Code Playgroud)

r distance geosphere

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

如何在rasterVis levelplot中将文本添加到特定/固定位置

实际上,这个问题包含针对相同行为的两个问题.

  1. 如何将文本(因每个面板而异)添加到面板区域中的固定位置?我知道panel.textlatticeExtra::layer 解决方案,但它使用绘图区域坐标添加文本.例如,我想在每个面板的右下角添加文本,即使它们的比例不同.

  2. 如何从levelplot面板区域添加文本?这里解释的方法要求levelplot有一个plot_01.legend.top.vp区域来添加我没有的文本,并且trellis之前绘制了对象.此外,我想在左下ylab图中添加文字.我ylab在这里用来说明行的含义但我需要第二个ylab来表示y轴值.我发现了这个问题的另一个 问题,但它不起作用.

样本图

上图是由raster::stack对象和rasterVis::levelplot方法创建的.我同意一个肮脏的解决方案,即使我更喜欢优雅的解决方案.尽管有上述问题,我仍然对其他使用的方法持开放态度levelplot.

r raster levelplot rastervis

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

如何折叠频率表的行以在新列中添加其计数?

我有一个包含样本分类的数据框:

 Seq_ID   Family Father   Mother   Sex    Role    Type  
   <chr>     <dbl> <chr>    <chr>    <chr>  <chr>   <chr> 
 1 SSC02219 11000. 0        0        Male   Father  Parent
 2 SSC02217 11000. 0        0        Female Mother  Parent
 3 SSC02254 11000. SSC02219 SSC02217 Male   Proband Child 
 4 SSC02220 11000. SSC02219 SSC02217 Female Sibling Child 
 5 SSC02184 11001. 0        0        Male   Father  Parent
 6 SSC02181 11001. 0        0        Female Mother  Parent
 7 SSC02178 11001. SSC02184 SSC02181 Male   Proband Child 
 8 SSC03092 11002. 0        0        Male   Father  Parent
 9 …
Run Code Online (Sandbox Code Playgroud)

r frequency dataframe dplyr janitor

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