我在使用dplyr语法时遇到了一些麻烦.我有一个包含不同变量和一个分组变量的数据框.现在我想使用R中的dplyr计算每个组中每列的平均值.
df <- data.frame(
a = sample(1:5, n, replace = TRUE),
b = sample(1:5, n, replace = TRUE),
c = sample(1:5, n, replace = TRUE),
d = sample(1:5, n, replace = TRUE),
grp = sample(1:3, n, replace = TRUE)
)
df %>% group_by(grp) %>% summarise(mean(a))
Run Code Online (Sandbox Code Playgroud)
这给出了"grp"表示的每个组的列"a"的平均值.
我的问题是:是否有可能同时获得每个组中每列的方法?或者我必须df %>% group_by(grp) %>% summarise(mean(a))
为每一栏重复一次?
我想拥有的是什么
df %>% group_by(grp) %>% summarise(mean(a:d)) # "mean(a:d)" does not work
Run Code Online (Sandbox Code Playgroud) 我想知道如何在ggplot中填充黄土平滑线之间的区域.
以下数据框用于图片:
x y ymin ymax grp ydiff
1 1 3.285614 3.285614 10.14177 min 6.8561586
2 1 10.141773 3.285614 10.14177 max 6.8561586
3 2 5.061879 5.061879 11.24462 min 6.1827368
4 2 11.244615 5.061879 11.24462 max 6.1827368
5 3 8.614408 8.614408 13.45030 min 4.8358931
6 3 13.450301 8.614408 13.45030 max 4.8358931
7 4 6.838143 6.838143 12.34746 min 5.5093150
8 4 12.347458 6.838143 12.34746 max 5.5093150
9 5 10.390673 10.390673 14.55314 min 4.1624713
10 5 14.553144 10.390673 14.55314 max 4.1624713
11 6 …
Run Code Online (Sandbox Code Playgroud) 我想用数学比较来分割表达式,例如
unlist(strsplit("var<3", "(?=[=<>])", perl = TRUE))
unlist(strsplit("var==5", "(?=[=<>])", perl = TRUE))
unlist(strsplit("var>2", "(?=[=<>])", perl = TRUE))
Run Code Online (Sandbox Code Playgroud)
结果是:
[1] "var" "<" "3"
[1] "var" "=" "=" "5"
[1] "var" ">" "2"
Run Code Online (Sandbox Code Playgroud)
对于上面的第二个例子,我想得到[1] "var" "==" "5"
,所以这两个=
应该作为单个元素返回.如何更改正则表达式以实现此目的?(我已经尝试过"=="的分组和量词,但没有任何效果 - 正则表达式不是我的朋友......)
对于简单glm
对象,我可以使用predict(fit, type = "terms")
检索每个术语具有拟合值的矩阵.
什么是lmer
resp 的等价物.glmer
合身模特?据我所见,该predict.merMod
功能不支持type = terms
.
尽管在类似主题上有很多帖子,但它们都没有帮助我理解如何将描述文件设置为R包.
我的问题是:
1.)我的描述文件现在是否正确?我是否正确使用"依赖"和"导入"?(也许是重复的问题...)
2.)需要的包(依赖项?)是否在需要时自动与我的包一起安装,或者当我的某个包函数需要引用导入包的功能时"加载"?(在这个问题上没找到任何东西......)
我试图向CRAN提交一个包并得到以下反馈:
- 检查包依赖...注意取决于:包括非默认包:'MASS''car''外来''ggplot2''lmtest''plyr''reshape2''scale'在搜索路径中添加这么多包过多有选择地进口是优选的.
我最初在DESCRIPTION文件的depends部分列出了上面提到的所有包.在NAMESPACE文件中,我用于import(pkgName)
上面列出的所有包.
之后,我使用importFrom(pkgName, function)
NAMESPACE文件更新了我的文件,并将大部分包移到了DESCRIPTION文件的导入部分.使用当前R-devel版本的包检查不再提供此注释.这是我的DESCRIPTION文件的摘录:
License: GPL-3
Depends:
ggplot2
Imports:
MASS,
car,
foreign,
lmtest,
plyr,
reshape2,
scales
Collate:
'sjImportSPSS.R'
Run Code Online (Sandbox Code Playgroud)
和NAMESPACE文件:
import(ggplot2)
importFrom(MASS,lda)
importFrom(MASS,loglm)
importFrom(car,crPlots)
importFrom(car,durbinWatsonTest)
importFrom(car,influencePlot)
importFrom(car,leveragePlots)
importFrom(car,ncvTest)
importFrom(car,outlierTest)
importFrom(car,spreadLevelPlot)
importFrom(car,vif)
importFrom(foreign,read.spss)
importFrom(lmtest,bptest)
importFrom(plyr,adply)
importFrom(plyr,ddply)
importFrom(reshape2,melt)
importFrom(scales,brewer_pal)
importFrom(scales,percent)
Run Code Online (Sandbox Code Playgroud)
我不确定这种方法是否解决了上面的检查说明中给出的问题.此外,当我加载我的包时library(sjPlot)
,还附加了ggplot2,但没有其他包.我的包裹是否仍适用于其他用户?如果他们没有安装所有需要的软件包怎么办?
我想将工具提示添加到 (non-editable) 中的超链接JEditorPane
。我在网上找到了一些提示,但没有一个对我有用。这是我目前的方法:
jEditorPaneIsFollower.addMouseMotionListener(new java.awt.event.MouseMotionListener() {
@Override
public void mouseMoved(java.awt.event.MouseEvent evt) {
int pos = jEditorPaneIsFollower.viewToModel(evt.getPoint());
if (pos >= 0) {
HTMLDocument hdoc = (HTMLDocument)jEditorPaneIsFollower.getDocument();
javax.swing.text.Element e = hdoc.getCharacterElement(pos);
AttributeSet a = e.getAttributes();
String href = (String) a.getAttribute(javax.swing.text.html.HTML.Attribute.TITLE);
if (href != null) {
jEditorPaneIsFollower.setToolTipText(href);
} else {
jEditorPaneIsFollower.setToolTipText(null);
}
}
else {
jEditorPaneIsFollower.setToolTipText(null);
}
}
@Override
public void mouseDragged(java.awt.event.MouseEvent e) {
//
}
});
Run Code Online (Sandbox Code Playgroud)
我的编辑器窗格的初始化:
jEditorPaneIsFollower.setEditable(false);
jEditorPaneIsFollower.setContentType("text/html");
jEditorPaneIsFollower.setDocument(new HTMLDocument());
jEditorPaneIsFollower.setEditorKit(new HTMLEditorKit());
Run Code Online (Sandbox Code Playgroud)
编辑器窗格的内容如下:
jEditorPaneIsFollower.addMouseMotionListener(new java.awt.event.MouseMotionListener() {
@Override
public void …
Run Code Online (Sandbox Code Playgroud)