小编Ben*_*ker的帖子

如何制作带有大矩阵的热图?

我有一个1000*1000矩阵(只包含整数0和1),但是当我尝试制作热图时,会发生错误,因为它太大了.

如何创建具有如此大矩阵的热图?

r heatmap

10
推荐指数
5
解决办法
2万
查看次数

识别二进制列

我想在data.frame中识别二进制列.

例如,这个表

my.table <-read.table(text="a,b,c
0,2,0
0.25,1,1
1,0,0", header=TRUE, as.is=TRUE,sep = ",")
Run Code Online (Sandbox Code Playgroud)

会给 FALSE, FALSE, TRUE

r

10
推荐指数
2
解决办法
3877
查看次数

拆分一串连接的逗号分隔数据并将输出重新编码为因子

我正在尝试清理一些输入错误的数据.变量的问题允许五个选项中的多个响应,编号为1到5.数据已按以下方式输入(这只是一个示例 - 实际数据中有更多变量和更多观察值帧):

data
          V1
1    1, 2, 3
2    1, 2, 4
3 2, 3, 4, 5
4    1, 3, 4
5    1, 3, 5
6 2, 3, 4, 5
Run Code Online (Sandbox Code Playgroud)

以下是重新创建示例数据的一些代码:

data = data.frame(V1 = c("1, 2, 3", "1, 2, 4", "2, 3, 4, 5", 
                         "1, 3, 4", "1, 3, 5", "2, 3, 4, 5"))
Run Code Online (Sandbox Code Playgroud)

我真正需要的是要处理的数据更多...二进制 - 就像一组"是/否"问题 - 输入一个看起来更像的数据框:

data
    V1.1  V1.2  V1.3  V1.4  V1.5
1      1     1     1    NA    NA
2      1     1    NA     1    NA
3 …
Run Code Online (Sandbox Code Playgroud)

split r

10
推荐指数
2
解决办法
3800
查看次数

将绘制的段末端从圆形变为平坦

当我使用segments()R绘制一个片段时,两端总是呈圆形.如何将两端更改为扁平?

r

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

如何从线性模型(lm)预测x值

我有这个数据集:

x <- c(0, 40, 80, 120, 160, 200)
y <- c(6.52, 5.10, 4.43, 3.99, 3.75, 3.60)
Run Code Online (Sandbox Code Playgroud)

我使用lm()以下方法计算了线性模型

model <- lm(y ~ x)
Run Code Online (Sandbox Code Playgroud)

我想知道x如果我有新y值的预测值,例如ynew <- c(5.5, 4.5, 3.5),但如果我使用该predict()函数,它只计算新y值.

x如果我有新y值,如何预测新值?

r predict lm

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

从混合模型(lme4)公式中提取组件

我正在尝试在R中编写一个接受如下公式的函数:

y ~ 1 + sex + age + (1 | school) + (1 | school:section)
Run Code Online (Sandbox Code Playgroud)

有没有一种简单的方法来提取这个公式的各种组件,以便在我的函数中使用?例如,我希望能够获得左侧,每个变量,随机效应变量以及它们如何嵌套等.

有没有比走公式解析树更简单的方法呢?

r formula

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

无法在循环中打开png设备

我一直在摆弄R中的一个函数,其中,长话短说,我有一个for-loop,并且在每一步,我使用保存一个图png,然后立即readPNG使我可以提取RGB信息.然后我制作第二个图,然后readPNG这样我可以比较两个图像的RGB.问题是我png()在一些循环之后不断收到关于无法启动设备或打开文件进行写入的错误消息(可能只有少数几个循环,或者多达几千个循环) .

这是真正简化的代码,但它有基本要素,并生成错误消息:

testfun<-function(beg,fini)
{
 library(png)
 setwd("D://mydirectory")
 for (i in beg:fini)
 {
  png("test.png",width=277,height=277) #candidate image
  par(mai=c(0,0,0,0))
  plot(1,type="n",ann=FALSE,xlim=c(0,255),ylim=c(0,255),
         xaxt="n",yaxt="n",frame.plot=F)
  polygon(x=c(10,60,60),y=c(10,10,60),col="red")
  graphics.off()

  image<-readPNG("test.png")
  #code where I get rgb values for original

  png("test2.png",width=277,height=277) #candidate image with diferent params
  par(mai=c(0,0,0,0))
  plot(1,type="n",ann=FALSE,xlim=c(0,255),ylim=c(0,255),
         xaxt="n",yaxt="n",frame.plot=F)
  polygon(x=c(10,60,60),y=c(10,10,60),col="blue")
  graphics.off()

  image<-readPNG("test2.png")
  #code where I get rgb values for second image, and compare
 }
}
Run Code Online (Sandbox Code Playgroud)

并且错误消息:

Error in png("test.png", width = 277, height = 277) : 
  unable to start png() device …
Run Code Online (Sandbox Code Playgroud)

png r

10
推荐指数
2
解决办法
2万
查看次数

如何加快GLM估算?

我在Amazon EC2上使用RStudio 0.97.320(R 2.15.3).我的数据框有200k行和12列.

我试图用大约1500个参数拟合逻辑回归.

R使用7%的CPU并且具有60 + GB内存并且仍然需要很长时间.

这是代码:

glm.1.2 <- glm(formula = Y ~ factor(X1) * log(X2) * (X3 + X4 * (X5 + I(X5^2)) * (X8 + I(X8^2)) + ((X6 + I(X6^2)) * factor(X7))), 
  family = binomial(logit), data = df[1:150000,])
Run Code Online (Sandbox Code Playgroud)

有什么建议可以加快这一速度吗?

performance r bigdata

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

来自glmer输出的优势比和置信区间

我制作了一个模型,该模型着眼于许多变量及其对妊娠结局的影响.结果是分组二进制.一群动物将有34个怀孕和3个空,接下来将有20个怀孕和4个空等等.

我使用glmery是怀孕结果(怀孕或空怀)的函数对这些数据建模.

mclus5 <- glmer(y~adg + breed + bw_start + year + (1|farm),
                data=dat, family=binomial)
Run Code Online (Sandbox Code Playgroud)

我得到所有通常的系数等输出但是对于解释我想将其转换为每个系数的优势比和置信区间.

在过去的逻辑回归模型中,我使用了以下代码

round(exp(cbind(OR=coef(mclus5),confint(mclus5))),3)
Run Code Online (Sandbox Code Playgroud)

这将很好地提供我想要的东西,但它似乎不适用于我运行的模型.

有谁知道我可以通过R为我的模型获得此输出的方式?

r confidence-interval

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

从公式中删除偏移项

R有一个方便的工具来操纵公式,update.formula().当你想得到类似"包含以前公式中所有术语的公式除外x"时,这很有效,例如

f1 <- z ~ a + b + c
(f2 <- update.formula(f1, . ~ . - c))
## z ~ a + b
Run Code Online (Sandbox Code Playgroud)

但是,这似乎不适用于抵消条款:

f3 <- z ~ a + offset(b) 
update(f3, . ~ . - offset(b))
## z ~ a + offset(b)
Run Code Online (Sandbox Code Playgroud)

我已经挖了下来terms.formula,?update.formula参考:

[替换后,...]然后通过 'terms.formula(simplify = TRUE)'简化结果.

terms.formula(z ~ a + offset(b) - offset(b), simplify=TRUE)
## z ~ a + offset(b)
Run Code Online (Sandbox Code Playgroud)

(也就是说,这似乎没有删除offset(b)......)

我知道我可以通过使用deparse()和文本处理来破解解决方案,或者通过递归处理公式来删除我不想要的术语,但是这些解决方案实现起来很丑陋和/或烦人.无论是为什么这不起作用的启示,还是一个相当紧凑的解决方案,都会很棒......

r formula

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

标签 统计

r ×10

formula ×2

bigdata ×1

confidence-interval ×1

heatmap ×1

lm ×1

performance ×1

png ×1

predict ×1

split ×1