小编use*_*871的帖子

ggplot2,更改标题大小

我希望我的主标题和轴标题与我的绘图中带注释的文本具有相同的字体大小.

我使用了theme_get()并发现文本大小为12,所以我在我的主题声明中这样做 - 这不起作用.我也尝试将相对大小发送到1,这不起作用

在此输入图像描述 我希望有人可以帮助我.

代码如下

library(ggplot2)
library(gridExtra)  #to set up plot grid
library(stringr)  #string formatting functions
library(plyr)  #rbind.fill function
library(reshape2)  #transformation of tables

dat<-data.frame(
est=c(2.75,2.95,2.86,2.99),
ucl=c(2.92,3.23,3.38,4.91),
lcl=c(2.24,1.67,2.44,1.82),
ord=c(1,2,1,2)
)
dat$varname<-c('Estimate','Predictive','Estimate','Predictive')
dat$grp<-c('Cobalt','Cobalt','Chromium','Chromium')

for (i in unique(dat$grp)) {
  dat <- rbind.fill(dat, data.frame(grp = i, ord=0,
                                    stringsAsFactors = F))
}

dat$grp_combo <- factor(paste(dat$grp, dat$ord, sep = ", "))
dat$grpN <- as.numeric(dat$grp_combo)



rng <- c(0,6)
scale.rng <-1


xstart=-(max(dat$grpN)+2)
xend=4


ThemeMain<-theme(legend.position = "none", plot.margin = unit(c(0,0,0, 0), "npc"), 
                 panel.margin = unit(c(0,0, 0, 0), "npc"), …
Run Code Online (Sandbox Code Playgroud)

r data-visualization ggplot2

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

从截断的正态分布生成有效的随机数

我想从正态分布中采样50,000个值,其中mean = 0和sd -1.但我想将值限制为[-3,3].我已编写代码来执行此操作,但不确定它是否最有效?希望得到一些建议.

lower <- -3 
upper <- 3
x_norm<-rnorm(75000,0,1)
x_norm<-x_norm[which(x_norm >=lower & x_norm<=upper)]
repeat{
    x_norm<-c(x_norm, rnorm(10000,0,1))
    x_norm<-x_norm[which(x_norm >=lower & x_norm<=upper)]
    if(length(x_norm) >= 50000){break}
}
x_norm<-x_norm[1:50000]
Run Code Online (Sandbox Code Playgroud)

r random-sample

9
推荐指数
3
解决办法
4416
查看次数

更有效的策略()或匹配()

我有一个正数和负数的向量

vec<-c(seq(-100,-1), rep(0,20), seq(1,100))
Run Code Online (Sandbox Code Playgroud)

向量大于示例,并采用一组随机值.我必须重复找到载体中的负数的数量......我发现这是非常低效的.

由于我只需要找到负数的数量,并且向量被排序,我只需要知道前0或正数的索引(实际随机向量中可能没有0).

目前我正在使用此代码来查找长度

length(which(vec<0))
Run Code Online (Sandbox Code Playgroud)

但这迫使R遍历整个向量,但由于它已经排序,所以没有必要.

我可以用

match(0, vec)
Run Code Online (Sandbox Code Playgroud)

但我的矢量并不总是0

所以我的问题是,是否有某种match()函数应用条件而不是查找特定值?或者是否有更有效的方法来运行我的which()代码?

谢谢

r vectorization match which

6
推荐指数
1
解决办法
1261
查看次数

mapply和两个列表

我正在尝试使用mapply来组合两个列表(A和B).每个元素都是一个数据帧.我正在尝试将A中的数据帧转换为B中的相应数据帧.以下内容返回我在combo1中的内容:

num = 10
A<-list()
B<-list()
for (j in 1:num){
    A[[j]] <- as.data.frame(matrix(seq(1:9),3,3))
    B[[j]] <- as.data.frame(matrix(seq(10:18),3,3))
}

combo1<-list()
for (i in 1:num){
    combo1[[i]] <-rbind(A[[i]], B[[i]])  
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用mapply来做同样的事情,但我无法让它工作:

combo2<-list()
combo2<-mapply("rbind", A, B)
Run Code Online (Sandbox Code Playgroud)

我希望有人可以帮助我

r list apply

5
推荐指数
1
解决办法
700
查看次数

在 mclogit 中编码随机效应

我正在尝试使用条件逻辑模型分析离散选择实验,并使用 R 包中的 mclogit 函数对每个受试者产生随机效应mclogit。每个受试者 (ID) 评定 4 个选择集,其中包含 4 个备选方案。

我收到错误

属性(.Data) <- c(attributes(.Data), attrib) 中的错误:无法在符号上设置属性

当我将其编码为

out2 <- mclogit(fm2, random=~1|ID, data=ds.pork)

我希望得到正确编码的帮助。

library(support.CEs)
library(survival)
library(mclogit)

d.pork <- Lma.design(
  attribute.names = list(
    Price = c("100", "130", "160", "190")),
  nalternatives = 3,
  nblocks = 4,
  row.renames = FALSE,
  seed = 987)

data(pork)

dm.pork <- make.design.matrix(
  choice.experiment.design = d.pork,
  optout = TRUE,
  continuous.attributes = c("Price"),
  unlabeled = FALSE)

ds.pork <- make.dataset(
  respondent.dataset = pork,
  choice.indicators =
    c("q1", "q2", "q3", …
Run Code Online (Sandbox Code Playgroud)

r mixed-models logistic-regression

5
推荐指数
1
解决办法
2224
查看次数

样品函数R不产生均匀分布的样品

我正在创建一项调查.有31个可能的问题,我希望每个受访者回答3的子集.我希望他们以随机顺序进行管理.参与者不应该两次回答相同的问题

我创建了一个带有参与者索引的表矩阵,以及第一,第二和第三个问题的问题索引列.

使用下面的代码,索引31在我的样本中代表性不足.

我想我正在错误地使用示例函数.我希望有人能帮助我吗?

SgPassCode <- data.frame(PassCode=rep(0,10000), QIndex1=rep(0,10000),
  QIndex2=rep(0,10000), QIndex3=rep(0,10000))

set.seed(123)
for (n in 1:10000){
  temp <- sample(31,3,FALSE)
  SgPassCode[n,1] <- n 
  SgPassCode[n,-1] <- temp
}

d <- c(SgPassCode[,2],SgPassCode[,3],SgPassCode[,4])
hist(d)
Run Code Online (Sandbox Code Playgroud)

simulation r sample random-sample

4
推荐指数
1
解决办法
299
查看次数

mclapply其他论点

我创建了一个函数DevCstat().

它需要参数:indat,mod,Covar,txtMat,PatCovar.

indat是一个列表,我想将该函数应用于列表的每个元素.

mod,Covar,txtMat,PatCovar是我想用于每次调用函数的对象,这些对象不会改变列表元素.

这似乎有效:

lapply(test, DevCstat, mod='A', Covar=Covar,txtMat=txtMat, PatCovar=PatCovar)
Run Code Online (Sandbox Code Playgroud)

但是,并行版本不起作用:

mclapply(test,DevCstat,mod = 'A', Covar=Covar, txtMat=txtMat, PatCovar=PatCovar, SIMPLIFY = F, mc.cores = getOption("mc.cores", numcore))
Run Code Online (Sandbox Code Playgroud)

我收到了错误

all scheduled cores encountered errors in the user code
Run Code Online (Sandbox Code Playgroud)

我认为问题是mclapply没有传递额外的参数.

有谁知道如何正确地做到这一点?

谢谢

parallel-processing r lapply mclapply

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

> =不工作,R

我正在运行下面的代码.函数Ax返回值1.但是ifelse语句不识别Ax == 1.

我已经尝试使函数的输出为双精度,所有数值都加倍.这没效果.

我希望:
1)帮助解决此特定情况
2)获取有关如何避免此问题的提示

Axfun<-function(beta,gamma,a,b,g,H0stud,Wh,Wi){ 
  ((b*beta + g*gamma)*(1 + 2*g*gamma)*(1 + gamma + b*((-beta)*(1 + gamma) + a*(-1 + beta)*(1 + g*gamma)))*H0stud*Wi)/
    ((-1 + b*beta)*(1 + gamma)*((-g)*gamma*(1 + 2*g*gamma)*Wi + b*beta*((-1 + g*gamma*(-2 + H0stud) + H0stud)*Wh - (1 + g*gamma)*H0stud*Wi)))
}

Ax<-Axfun(2^1,
          2^0,
          2^0,
          2^-3,
          2^-1,
          1,
          1,
          0.4)

ifelse(Ax>=1, 0, Ax)
Run Code Online (Sandbox Code Playgroud)

double logic if-statement r

0
推荐指数
1
解决办法
940
查看次数