我有以下代码来生成双峰分布,但是当我绘制直方图时.我没有看到2种模式.我想知道我的代码是否有问题.
mu1 <- log(1)
mu2 <- log(10)
sig1 <- log(3)
sig2 <- log(3)
cpct <- 0.4
bimodalDistFunc <- function (n,cpct, mu1, mu2, sig1, sig2) {
y0 <- rlnorm(n,mean=mu1, sd = sig1)
y1 <- rlnorm(n,mean=mu2, sd = sig2)
flag <- rbinom(n,size=1,prob=cpct)
y <- y0*(1 - flag) + y1*flag
}
bimodalData <- bimodalDistFunc(n=100,cpct,mu1,mu2, sig1,sig2)
hist(log(bimodalData))
Run Code Online (Sandbox Code Playgroud) 我编写了以下代码来制作情节
pd<- position_dodge(.2) # # move them .05 to the left and right
pm25 <- ggplot(data, aes(x=CombSEG, y=conc,shape=A,color=A, lty=A, group=A)) +
geom_point() +
geom_line() +
geom_errorbar(aes(ymin=conc-se, ymax=conc+se),
width=.1, position=pd) +
theme_bw()+
limits(c(0
scale_y_log10(breaks=c(0.01,0.1,1),labels=c(0.01,0.1,1))
Run Code Online (Sandbox Code Playgroud)
自动刻度尺为10 ^ -1.8,10 ^ -1.6,10 ^ -1.4 ... 10 ^ -0.4.我真的希望最低刻度为0.01,最高刻度为1.
谢谢您的帮助.
编辑:这是我尝试你的代码后情节的样子.

我想label在ggplot的情节中写微米平方/立方米,当我添加m ^ 2时出现错误.第一个表达式还可以,但它缺少^ 2.我尝试添加m ^ 2不起作用,因为我没有看到上标.
ylab (expression(paste("Surface area concentration (",mu,"m/",m^3,")", sep="")))
ylab (expression(paste("Surface area concentration (",mu,",m^2,"/,m^3,")", sep="")))
谢谢
我制作了2个名为beta和km的气泡图.我想并排比较这些图,但scale_area似乎不同,这使得很难根据气泡的大小在视觉上比较2个图.
如果您在下面的图中注意到图例,则比例会有所不同.我认为这是因为betaGSD5数据集上的最高BiasAM值~64和kmGSD5数据= 100.
如何手动更改scale_area以使betaPlot比例与kmPlot比例匹配?
还可以手动设置图例中断吗?而不是自动生成,可以指定我的传说,但我想这样吗?0-10,10-30,30-50,50-70,70-100,
100
betaGSD5数据:https://dl.dropbox.com/u/63947093/betaGSD5.csv
kmGSD5数据:https://dl.dropbox.com/u/63947093/kmGSD5.csv
这是beta版代码
betaPlot <- ggplot(betaGSD5, aes(N,PctCens,size=BiasAM,label=NULL)) +
geom_point(colour="red", shape=16) +scale_area(to=c(1,10)) +
xlab("Sample size") + ylab("Percent censored") +
xlim(0,100)+ ylim(0,100) +
theme_bw()+
opts(
#legend.position='none',
panel.grid.minor = theme_blank(),
panel.background = theme_blank(),
axis.ticks = theme_blank(),
axis.title.x=theme_text(face='bold',vjust=0.2, size =12), #size=15 #hjust:move horizonal, vjust-move verticall
axis.title.y=theme_text(face='bold',angle=90, vjust=0.2,size =12))
print(betaPlot)
Run Code Online (Sandbox Code Playgroud)

KM情节
kmPlot <- ggplot(kmGSD5, aes(N,PctCens,size=NewBiasAMpct,label=NULL)) +
geom_point(colour="red", shape=16) +scale_area(to=c(1,10)) +
xlab("Sample size") + ylab("Percent censored") +
xlim(0,100)+ ylim(0,100) +
theme_bw()+
opts(
#legend.position='none',
panel.grid.minor = theme_blank(), …Run Code Online (Sandbox Code Playgroud) 我有一个像这样的长数据帧:
Row Conc group
1 2.5 A
2 3.0 A
3 4.6 B
4 5.0 B
5 3.2 C
6 4.2 C
7 5.3 D
8 3.4 D
Run Code Online (Sandbox Code Playgroud)
...
实际数据有数百行.我想将A分为C和D.我查阅了网页,找到了几个解决方案,但不适用于我的情况.
例如:案例1:
x = data.frame(num = 1:26, let = letters, LET = LETTERS)
set.seed(10)
split(x, sample(rep(1:2, 13)))
Run Code Online (Sandbox Code Playgroud)
我不想以任意数字分割
案例2:按级别/因子拆分
data2 <- data[data$sum_points == 2500, ]
Run Code Online (Sandbox Code Playgroud)
我也不想分开一个因素.有时我想将多个层次结合在一起.
案例3:按行号选择
newdf <- mydf[1:3,]
Run Code Online (Sandbox Code Playgroud)
实际数据有数百行.我不知道行号.我只知道我想分开的级别.
我有一个数据框列表,并希望通过列表应用if else函数
df1= data.frame(letter=LETTERS[1:5], res=runif(10), cens=rep(0:1,5))
df2= data.frame(letter=LETTERS[1:5], res=runif(10), cens=rep(0,5))
df3= data.frame(letter=LETTERS[1:5], res=runif(10), cens=rep(0:1,5))
df4= data.frame(letter=LETTERS[1:5], res=runif(10), cens=rep(0,5))
df.list=list(df1,df2,df3,df4)
reg.stats = function(var1){
gm.reg=exp(mean(log(var1)))
gsd.reg=exp(sd(log(var1)))
return(c(gm.reg,gsd.reg))
}
other.stats = function(obs,cens){
nondetects <- obs[cens==1]
detects <- obs[cens== 0]
gm.other=exp(mean(log(detects)))
gsd.other=exp(sd(log(detects)))
return(c(gm.other,gsd.other))
}
Run Code Online (Sandbox Code Playgroud)
我想循环遍历每个df,如果单个df = 0(即df2)中的cens变量之和,则应用reg.stats函数,否则应用other.stats函数.
在真实数据集中,我有一个50多个dfs的列表,我过去做的是手动挑选所有cens = 0的dfs并使用lapply函数.没关系,但如果我将数据框分开并为每个列表单独使用lapply然后合并结果,则更改顺序,然后我需要重新排序结果.有更快,更清洁的方法吗?
uncens.list = df.list[c(2,4)]
uncens.res= lapply(uncens.list, function(i) reg.stats(i$res))
cens.list = df.list[c(1,3)]
cens.res.=lapply(cens.list,function(i) other.stats(i$res,i$cens))
Run Code Online (Sandbox Code Playgroud) 我想在我的 scatterplot3d 中添加图例。我创建了 3 个单独的图并将它们叠加到 1 个图中,所以我不知道图例的语法(“topleft”,inset=0.5)应该去哪里
Plot <-scatterplot3d(data$Size,data$Pct,data$bias1, type='h', zlim=c(-20,100), xlab="size", ylab= "Percent", zlab="Bias")
Plot$points3d (data$Size,data$Pct,data$Bias2,
col="blue", type="h", pch=15, cex=.6)
Plot$points3d(data$Size,data$Pct,data$Bias3,
col="red", type="h", pch=4, cex=.6)
Run Code Online (Sandbox Code Playgroud) 我有 2 个独立的数据框
df1
ID Name loq
1 a 1.2
1 b 1.4
1 c 1.0
2 a 0.5
2 b 0.7
2 c 0.3
3 a 0.5
3 b 0.2
3 c 0.1
Run Code Online (Sandbox Code Playgroud)
df2 这是数据帧列表
[1] ID Name
1 a
3 b
2 c
2 a
[2] ID Name
3 c
2 b
2 a
1 c
Run Code Online (Sandbox Code Playgroud)
df2 的结果如下所示
[1] ID Name loq
1 a 1.2
3 b 0.2
2 c 0.3
2 a 0.5
[2] ID Name loq …Run Code Online (Sandbox Code Playgroud) 对由数字,NA和NaN组成的向量进行舍入的最佳方法是什么?我不想省略NA或NaN,因为我想保留数字的顺序.
x = c(2,3,4,NA,"NaN",3, 5)
round(x,2) #does not work
Run Code Online (Sandbox Code Playgroud)
编辑:回合中的错误(x,2):数学函数的非数字参数
我编写了以下代码并得到了错误:要替换的项目数不是代码行中替换长度的倍数:
X_after[count, ] = c(censN1, censN2, censN3)
Run Code Online (Sandbox Code Playgroud)
在搜索互联网之后,我发现问题可能是由预先确定n_samples的NA和最终 X_after数据集的无法匹配的样本数量引起的.如何调整矩阵代码,使其ncol在循环后动态确定,而不是在n_samples预先确定?或者,如果您对此错误消息有其他解决方案,请同时插入.
multiLodSim <- function (GM, GSD, n_samples, n_iterations, p) {
X_after <- matrix(NA_real_, nrow = n_iterations, ncol = n_samples)
delta <- matrix(NA_real_, nrow = n_iterations, ncol = n_samples)
mu <- log(GM)
sigma <- log(GSD)
lod1 <- quantile(rlnorm(100000,mu,sigma),p)
lod2 <- quantile(rlnorm(100000,mu,sigma),(p*0.95))
lod3 <- quantile(rlnorm(100000,mu,sigma),(p*0.9))
pct_cens <- numeric(n_iterations)
count <- 1
while(count <= n_iterations) {
sub_samples = n_samples/3 # divide the total sample into third (for 3 …Run Code Online (Sandbox Code Playgroud) 我想R到以下:如果LocID等于3,4,7,8,14那么数据$ newConc等于数据$ conc/2 else数据$ newConc < - data $ conc#else保持conc相同
data$newConc <- if(data$LocID == c(3,4,7,8,14))
data$conc/2 else data$conc
str(data)
$ LocID : int 1 2 3 4 5 6 7 8 9 10 ...
$ time : int 1 1 1 1 1 1 1 1 1 1 ...
$ conc : num 0.03695 0.0155 0.00738 0.00753 0.01795 ...
Run Code Online (Sandbox Code Playgroud)
警告:条件长度> 1且仅使用第一个元素