小编Ale*_*mbe的帖子

如何检查函数调用是否会导致警告?

在R中,如何确定函数调用是否会导致警告?

也就是说,在调用函数之后,我想知道该调用的实例是否产生了警告.

r

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

更改ylim(轴限制)会使数据落在范围之外.如何防止这种情况?

df <- data.frame(age=c(10,10,20,20,25,25,25),veg=c(0,1,0,1,1,0,1))
g=ggplot(data=df,aes(x=age,y=veg))
g=g+stat_summary(fun.y=mean,geom="point")
Run Code Online (Sandbox Code Playgroud)

点反映了每个年龄的蔬菜的平均值,这是我预期的并且希望在使用以下命令更改轴限制后保留.

g=g+ylim(0.2,1)
Run Code Online (Sandbox Code Playgroud)

遗憾的是,使用上述命令更改轴限制会导致从数据中删除veg == 0子集,从而产生

"警告消息:删除了包含缺失值的4行(stat_summary)"

这很糟糕,因为现在数据图(stat_summary mean)省略了veg == 0点.如何防止这种情况?我只是想避免显示绘图的空白部分 - 纵坐标从0到.2,但不删除stat_summary计算中的相关数据.

r ggplot2

16
推荐指数
1
解决办法
9316
查看次数

是否有可能以同样的方式抖动两个ggplot geom?

使用position_jitter可以创建随机抖动,以防止数据点过度绘制.

在下面我用棒球统计的例子来说明我的问题.当我用两个图层绘制相同的数据时,相同的抖动调用会使geoms有点不同.这是有道理的,因为它可能会在两次调用中独立地生成随机抖动,但会产生您在下面的图表中看到的问题.

p=ggplot(baseball,aes(x=round(year,-1),y=sb,color=factor(lg))) 
p=p+stat_summary(fun.data="mean_cl_normal",position=position_jitter(width=3,height=0))+coord_cartesian(ylim=c(0,40))
p+stat_summary(fun.y=mean,geom="line",position=position_jitter(width=3,height=0))
Run Code Online (Sandbox Code Playgroud)

虽然错误条点和线引用相同的数据,但它们是脱节的 - 线和点不连接.

有解决办法吗?我认为位置闪避可能是答案,但它似乎不适用于这些类型的情节.或者,也许有一些方法可以让mean_cl_normal调用也添加行? 替代文字http://img339.imageshack.us/img339/1807/screenshot20100702at943.png

r ggplot2

16
推荐指数
3
解决办法
5748
查看次数

如何通过某些变量折叠数据框,并在其他变量中取平均值

我需要通过一些变量来总结数据框,忽略其他变量.这有时被称为崩溃.例如,如果我有这样的数据帧:

Widget Type Energy  
egg 1 20  
egg 2 30  
jap 3 50  
jap 1 60
Run Code Online (Sandbox Code Playgroud)

然后由Widget折叠,使用Energy的因变量Energy~Widget会产生

Widget Energy  
egg  25  
jap  55  
Run Code Online (Sandbox Code Playgroud)

在Excel中,最接近的功能可能是"数据透视表",我已经研究了如何在python中实现它(http://alexholcombe.wordpress.com/2009/01/26/summarizing-data-by-combinations-of-变量 -with -python /),这是R使用doBy库做一些非常相关的事情的例子(http://www.mail-archive.com/r-help@r-project.org/msg02643.html),但有一个简单的方法来做到这一点?甚至更好的是ggplot2库中是否有任何内容可以创建在某些变量中崩溃的图?

pivot-table r ggplot2

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

如何使用字符串变量为ddply创建变量列表?

使用R的内置ToothGrowth示例数据集,这适用于:

ddply(ToothGrowth, .(supp,dose), function(df) mean(df$len)) 
Run Code Online (Sandbox Code Playgroud)

但我想将子集因子变为变量,例如

factor1 = 'supp'
factor2 = 'dose'
ddply(ToothGrowth, .(factor1,factor2), function(df) mean(df$len)) 
Run Code Online (Sandbox Code Playgroud)

这不起作用.该怎么做?

我想也许是这样的:

factorCombo = paste('.(',factor1,',',factor2,')', sep='') 
ddply(ToothGrowth, factorCombo, function(df) mean(df$len)) 
Run Code Online (Sandbox Code Playgroud)

但它也不起作用.我认为我很接近,但不确定正确的做法.我想整个命令可以放入一个字符串,然后是字符串的eval()调用,但希望有更优雅的方法吗?

r plyr

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

warnings()在函数内不起作用?如何解决这个问题?

op <- options(warn=0)  #although doesn't work for any value of warn
assign("last.warning", NULL, envir = baseenv())  
thisDoesntWork<- function() {
warning("HEY, this is definitely a warning!")
cat(paste("number of warnings:",length(warnings())))
}   
>thisDoesntWork()
Warning in thisDoesntWork() : HEY, this is definitely a warning!
number of warnings: 0
Run Code Online (Sandbox Code Playgroud)

警告的数量应该是1而不是0 - warnings()如果在函数内调用,它似乎不返回任何内容.为什么?如果警告发生,如何解决这个问题并将其打印出来?

我不想使用tryCatch,因为那时我失去了函数返回的值(它可能仍然返回一个有效值,即使它生成了一个警告).

error-handling r

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

将R公式格式转换为数学方程

当我们在R中拟合统计模型时,比如说

lm(y ~ x, data=dat)
Run Code Online (Sandbox Code Playgroud)

我们使用R的特殊公式语法:"y~x"

是否存在从这样的公式转换为相应的公式的东西?在这种情况下,它可以写成:

y = B0 + B1*x
Run Code Online (Sandbox Code Playgroud)

这将非常有用!首先,因为有更复杂的公式,我不相信我的翻译.其次,在用R/Sweave/knitr编写的科学论文中,有时候模型应该以方程式形式报告,并且为了完全可重复的研究,我们希望以自动化方式进行.

statistics r

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

有没有办法在ggplot中设置行结束样式或行连接样式?

有关R中可用的行结束和行连接样式的说明,请参阅 http://students.washington.edu/mclarkso/documents/line%20styles%20Ver2.pdf

对于ggplot,我已经在plot_theme()中搜索了ggplot2的github列表并选择了https://github.com/hadley/ggplot2/wiki/%2Bopts%28%29-List但是没有找到任何线索,所以我认为它是不可能在ggplot中更改这些.

r ggplot2

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

在R中实施ROT-13

我想要一个函数,当传递一个只包含字母的字符串时,将字符串中的每个字母通过字母表旋转X个字符,其中X是函数的参数.这个着名的例子是当X = 13时,称为ROT-13

函数< - ROTx(str,x){ ?? }

这是我期望R精灵可以在几行中完成的事情,而我最终会有10个或更多.

string r

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

如何将刻度标签移近轴?

library(ggplot2)
p <- ggplot(mtcars, aes(x=mpg, y=wt*1000, color = factor(cyl))) + geom_point() 
p + ylab("weight (lb)") +theme_bw()
Run Code Online (Sandbox Code Playgroud)

刻度标签太靠近垂直轴

我想将5000,4000,3000和2000移近垂直轴.我知道可以使用theme(axis.title.y=element_text(vjust=0.36,hjust=.36))或类似地将轴标题移动得更远,但有时我真的想要移动刻度标签,而不是轴标题.

r ggplot2

4
推荐指数
2
解决办法
4546
查看次数

如何编写一个函数来创建与ggplot2一起使用的自定义误差线?

Ggplot2允许为曲线添加误差条.要为您计算误差条限制,它会包装来自Hmisc的函数.例如,要引导,可以使用mean_cl_boot选项:

m <- ggplot(mtcars, aes(x=cyl, y=am)) + stat_summary(fun.y=mean,geom="point")
m2 <- m + stat_summary(fun.data = "mean_cl_boot", geom = "errorbar", conf.int=.95)
m2
Run Code Online (Sandbox Code Playgroud)

但是,如果您需要编写自定义函数来计算错误条限制呢?如何编写函数以从stat_summary调用中调用?

r ggplot2

3
推荐指数
1
解决办法
1819
查看次数

通过因子值将数据帧分成子集,发送到返回glm类的函数,如何重组?

感谢Hadley的plyr包ddply函数,我们可以获取一个数据帧,按因子将其分解为子数据帧,将每个数据发送到一个函数,然后将每个子数据帧的函数结果组合成一个新的数据帧.

但是如果函数返回像glm这样的类的对象,或者在我的情况下,返回ac("glm","lm").那么,这些不能组合成数据帧吗?我得到了这个错误

Error in as.data.frame.default(x[[i]], optional = TRUE, stringsAsFactors = stringsAsFactors) : cannot coerce class 'c("glm", "lm")' into a data.frame
Run Code Online (Sandbox Code Playgroud)

是否有一些更灵活的数据结构可以容纳我的函数调用的所有复杂的glm类结果,保留有关数据框子集的信息?

或者这应该以完全不同的方式完成?

r plyr

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

标签 统计

r ×12

ggplot2 ×6

plyr ×2

error-handling ×1

pivot-table ×1

statistics ×1

string ×1