小编Spa*_*man的帖子

以八度为单位的行式操作

有没有办法在八度音程中对矩阵执行行方式操作?

我有一个(mXn)整数矩阵,我可以获得一个m dimensional向量,其中每个元素是相应行的最大元素吗?我怎么能在八度音中做到这一点?

matlab octave

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

有哪些替代方法可以在公式中指定二项式成功/试验?

假设您正在对二项式数据进行建模,其中每个响应是来自多个试验(N)的一些成功(y)以及一些解释变量(a和b).有一些函数可以做这种事情,它们似乎都使用不同的方法来指定y和N.

在glm中,你做glm(cbind(y,N-y)~a+b, data = d) (LHS成功/失败的矩阵)

在inla,你做inla(y~a+b, Ntrials=d$N, data=d)(分别指定试验次数)

在glmmBUGS中,你做glmmBUGS(y+N~a+b,data=d)(指定成功+试验作为LHS的条款)

在编写新方法时,我一直认为最好遵循glm所做的,因为人们通常会首先遇到二项式响应数据.但是,我永远不会记得它cbind(y,N-y)或者cbind(y,N)- 我通常似乎在我的数据中有成功/数量的试验而不是成功/失败次数 - YMMV.

当然,其他方法也是可能的.例如,使用RHS上的函数来标记变量是试验次数还是失败次数:

myblm( y ~ a + b + Ntrials(N), data=d)
myblm( y ~ a + b + Nfails(M), data=d)  # if your dataset has succ/fail variables
Run Code Online (Sandbox Code Playgroud)

或定义一个运算符只是做一个cbind,所以你可以这样做:

myblm( y %of% N ~ a + b, data=d)
Run Code Online (Sandbox Code Playgroud)

从而为LHS增添了一些含义,使其明确.

有没有人有更好的想法?这样做的正确方法是什么?

r formula

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

使用成对的相关列(dplyr,tidyr,data.table)

我有一个数据框,其中包含多个模型参数的多对估计和方差,每个模型参数都在一个部分中.这是一个生成说明性示例的函数:

samplerats <- function(){
    set.seed(310366)
    d = data.frame(section=c(rep("S1",10),rep("S2",10),rep("S3",5)))
    nr = nrow(d)
    for(i in 1:5){
        d[[paste0("est_v",i)]] = rnorm(nr)
        d[[paste0("var_v",i)]] = runif(nr)
    }
    d
}
Run Code Online (Sandbox Code Playgroud)

这是你得到的开始:

> d=samplerats()
> head(d)
  section     est_v1    var_v1     est_v2     var_v2      est_v3    var_v3
1      S1  0.3893008 0.1620882 -1.1915391 0.15439565  0.62022284 0.5487519
2      S1  0.8221099 0.3280630  0.7729817 0.14810283 -1.11337584 0.9947342
3      S1  0.8023230 0.1862810 -1.5285389 0.85648574 -1.74666907 0.4267944
4      S1 -0.2252865 0.5660111 -0.4348341 0.53013027  0.01823185 0.1379821
5      S1 -0.9475335 0.7904085 -1.0882961 0.40567780  1.69607397 0.3450983
6      S1  0.4415259 0.2969032  0.9200723 …
Run Code Online (Sandbox Code Playgroud)

r dplyr data.table tidyr

10
推荐指数
3
解决办法
1088
查看次数

如何在RStudio中进行多选编辑?

names(mydata)[names(mydata)=="q1"] <- "q01"  
Run Code Online (Sandbox Code Playgroud)

我想同时选择2 mydata,然后可以同时编辑它们。

一些高级文本编辑器允许您使用多个光标,例如,如果我在此行中同时选择“ mydata”,然后单击Delete并键入“ otherdata”,则最终得到:

names(otherdata)[names(otherdata)=="q1"] <- "q01"  
Run Code Online (Sandbox Code Playgroud)

尽管这里可以通过简单的搜索和替换来完成,但是有时具有多个选择和多个光标可能会更容易。

Sublime Text编辑器可以做到这一点,Atom和Emacs也可以。

r rstudio

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

当大小 &lt; 1 时,geom_sf 大小参数不起作用

问题:我正在尝试使用 sf 包和geom_sf()ggplot2创建美国州/县的地图,但我无法获得size多边形边界线宽度的参数geom_sf()以正确创建细线size < 1(例如ggplot(sf_obj) %>% geom_sf(size = 0.5).

具体来说,一个州/县的边界线似乎从任意小的(例如size = 0.05)一直到 具有相同的宽度size = 0.702。然后在 处似乎有一个奇怪的截止点size = 0.702,在该截止点上方边界线突然显得更宽。然后从size = 0.703最多到size = 1边界线似乎具有相同的宽度。对于size> 1,正如预期的那样,边界线会逐渐变宽。

研究:它似乎geom_sf()支持逐渐变化size,如图中的代码对由Bob Rudis地图<1,在这里和马特Strimas-麦基这里。这似乎是我的问题可能是同一个参考这里GGPLOT2的Github的页面上标题为“geom_sf发小尺寸高达1”,但这个问题被关闭,我不知道是否/如何我可以实现我的机器上的修补程序。这里(和这里)还有另一个类似的问题,但哈德利建议在这种情况下问题可能出在图形设备/查看器上。我在 RStudio 和 RGUI 中复制了我的问题(以及上面链接的两个 Github 问题),但我不确定如何测试/更改我的图形设备/查看器。

版本信息:我使用的是 ggplot2_3.0.0、sf_0.6.3、R 版本 3.5.1、RStudio 版本 1.1.456 和 Windows 10 版本 …

dictionary r ggplot2 r-sf

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

添加两个列表的所有元素

假设我有两个列表,列表的相应元素是相同的形状:

 e1=list(1,c(1,2,3),matrix(1:12,3,4))
 e2=list(1,c(1,2,3),matrix(1:12,3,4))
Run Code Online (Sandbox Code Playgroud)

我想逐个元素地添加这两个列表.这是我的解决方案,适用于任何长度的列表和任何形状的元素,只要它们匹配并且是可添加的:

> esum
function(e1,e2){
  e = list()
  for(i in 1:length(e1)){
    e[[i]]=e1[[i]]+e2[[i]]
  }
  e
}
> esum(e1,e2)
Run Code Online (Sandbox Code Playgroud)

但它看起来很丑陋,而且可能是一种可以在单行中完成的事情.

这是问题的第一阶段,实际上是要添加许多这些列表的完整列表,但是一旦定义了esum,它只是Reduce:

 > ee = list(e1,e2,e1,e1,e2)
 > Reduce(esum,ee)[[3]]  # lets just check [[3]] for now
      [,1] [,2] [,3] [,4]
 [1,]    5   20   35   50
 [2,]   10   25   40   55
 [3,]   15   30   45   60
Run Code Online (Sandbox Code Playgroud)

那么,任何人都有这样的单线程?

是的我知道单行并不总是最好的东西.

r

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

获取列表元素名称的一致向量

没有名称的列表的名称返回NULL:

> names(list(1,2,3))
NULL
Run Code Online (Sandbox Code Playgroud)

但添加一个命名的东西,突然名称具有列表的长度:

> names(list(1,2,3,a=4))
[1] ""  ""  ""  "a"
Run Code Online (Sandbox Code Playgroud)

因为这是一个命名列表.我想要的是一个函数,rnames说,将任何列表放入命名列表,这样:

rnames(list(1,2,3)) == c("","","")
identical(rnames(list()), character(0))
length(rnames(foo)) == length(foo) # for all foo
Run Code Online (Sandbox Code Playgroud)

和以下,这是姓名()所做的事情:

rnames(list(1,2,3,a=3)) == c("","","","a")
rnames(list(a=1,b=1)) == c("a","b")
Run Code Online (Sandbox Code Playgroud)

我目前的hacky方法是在列表中添加一个命名的东西,获取名称,然后将其删除:

rnames = function(l){names(c(monkey=1,l))[-1]}
Run Code Online (Sandbox Code Playgroud)

但有没有更好/正确的方法来做到这一点?

r

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

R中具有共享参数的多个公式

我们试图为R函数提供一种方法来处理一个模型,该模型具有多个响应,多个解释变量以及响应之间可能的共享参数.例如:

Y1 ~ X1 + X2 + X3
Y2 ~ X3 + X4
Run Code Online (Sandbox Code Playgroud)

指定两个响应和四个解释变量.X3出现在两者中,我们希望用户控制相关参数值是相同还是不同.即:

Y1 = b1 X1 + b2 X2 + b3 X3
Y2 = b3 X3 + b4 X4
Run Code Online (Sandbox Code Playgroud)

这是一个带有四个'b'参数的模型,或者

Y1 = b1 X1 + b2 X2 + b3 X3
Y2 = b4 X3 + b5 X4
Run Code Online (Sandbox Code Playgroud)

具有五个参数的模型.

两种可能性:

  • 在一个公式中指定所有解释变量,并提供矩阵映射对解释的响应.在这种情况下

Foo( Y1+Y2 ~ X1 + X2 + X3 + X4 + X5, map=cbind(c(1,1,1,0),c(0,0,1,1)))

将对应于第一种情况,和

Foo( Y1+Y2 ~ X1 + X2 + X3 + X4 + X5, map=cbind(c(1,1,1,0,0),c(0,0,0,1,1)))
Run Code Online (Sandbox Code Playgroud)

将是第二个.显然,需要对LHS进行一些解析,或者可能需要解析 …

r formulas

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

我可以获得R float的字节表示吗?

我正在尝试读取具有浮点值的复杂数据文件.已经提供了一些处理这种格式(Met Office PP文件)的C代码,并且它做了很多小事和交换.它不起作用.它得到了很多权利,比如数据的大小,但返回矩阵中的数值是无意义的,有NaN和像1e38和-1e38这样的值被大量洒落.

但是,我有一个二进制exe("convsh")可以将这些转换为netCDF,并且netCDF看起来很好 - 风速很好的旋涡图.

我在想的是PP文件的字节是以错误的顺序读入的.如果我可以将netCDF数据中正确返回的浮点数的字节与从C代码错误地返回的浮点数中的字节进行比较,那么我可能会找出正确的swappage.

那么是否有一个普通的R函数来转储浮点数的四个(或八个?)字节?就像是:

> as.bytes(pi)
[1] 23 54 163 73 99 00 12 45 # made up values
Run Code Online (Sandbox Code Playgroud)

搜索"bytes"和"float"和"binary"没有帮助.

它在C中的微不足道,我可能已经把它写在我写这篇文章的时候......

floating-point r

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

无法在R中加载wordnet包

我无法将wordnet加载到R.我使用R x64 2.14.1.我安装了包wordnet,然后我尝试加载包.

> library(wordnet)
Warning message:
In initDict() :
  cannot find WordNet 'dict' directory: please set the environment variable WNHOME to its parent
Run Code Online (Sandbox Code Playgroud)

怎么了?如何以及如何设置目录WNHOME.

r wordnet

7
推荐指数
2
解决办法
6063
查看次数