我正在编写一个绘制数据的函数.我想为y轴指定一个很好的圆数max,它大于数据集的最大值.
具体来说,我想要一个foo执行以下功能的函数:
foo(4) == 5
foo(6.1) == 10 #maybe 7 would be better
foo(30.1) == 40
foo(100.1) == 110
Run Code Online (Sandbox Code Playgroud)
我已经到了
foo <- function(x) ceiling(max(x)/10)*10
Run Code Online (Sandbox Code Playgroud)
舍入到最接近的10,但这对任意舍入间隔不起作用.
在R中有更好的方法吗?
我有一个简单的数据框,我正在尝试使用组合线和点图ggplot2.假设我的数据如下所示:
df <- data.frame(x=rep(1:10,2), y=c(1:10,11:20),
group=c(rep("a",10),rep("b",10)))
Run Code Online (Sandbox Code Playgroud)
而我正试图制作一个情节:
g <- ggplot(df, aes(x=x, y=y, group=group))
g <- g + geom_line(aes(colour=group))
g <- g + geom_point(aes(colour=group, alpha = .8))
g
Run Code Online (Sandbox Code Playgroud)
结果看起来很好,有一个例外.它有一个额外的图例显示alpha我的geom_point图层.

如何保持图例显示组颜色,但不能显示我的alpha设置?
是否有一种功能或其他方式可以使用鼠标在Shiny中实现徒手绘制(即绘制随机形状/大小)?
具体来说,我希望能够renderPlot通过以各种(但非均匀)方式标记它来与图形"交互" . - 换句话说,我希望能够标记已经存在的图形.
我的功能缺点已经发现包括:
click_plot交互类型的设置兼容.我试图找到一个快速的方法来搜索R中的数组中的特定字符串,有点像游戏Boggle,除了你知道前面的单词.
您可以按以下方向移动字符串的下一个字母:向上,向下,向右或向左
比如一个简单的例子,你有一个表格数组:
> G
A, Q, A, Q, Q,
A, Q, P, Q, Q,
Q, Q, P, L, Q,
Q, Q, Q, E, Q
Run Code Online (Sandbox Code Playgroud)
并且您希望将函数应用于带有字符串的G APPLE,对于要返回的函数TRUE,APPLE存在于此数组中,FALSE如果不存在.
是否存在可以做到这一点的预制函数或包,或者有一种聪明的方法来做到这一点,我在处理R中的字符串时相对较新,我很难找到方法.
任何帮助非常感谢.谢谢.
我知道我可以通过改变levels分组因子来切换线绘图顺序(即,哪条线被绘制为第1,第2,第3 ......).但是,这样做也会切换ggplot图例的顺序.
如何更改绘图顺序但保留原始图例顺序?
例
鉴于以下data.frame:
dat <- data.frame(id = rep(factor(letters[1:3]),3), y = c(1:3,3,2,1,1,3,1), x = rep(1:3,each = 3))
Run Code Online (Sandbox Code Playgroud)
我可以切换线路通过改变绘图命令levels的的id因素:
dat$id = relevel(dat$id, 'c').使用以下ggplot代码作为原始和relevel'ed数据:
library(ggplot2)
#Create coloring objects to kep color consistent:
cols <- rep(1:3,3)
names(cols) <- letters[1:3]
#Create line graph:
ggplot(dat,aes(x=x,y=y,color=id)) + geom_line(size = 2) +
scale_colour_manual('id',values=cols) ##set custom static coloring
Run Code Online (Sandbox Code Playgroud)
产生以下2个图:
左:因子id|的原始级别顺序 右:使用relevel
请注意,线已成功重新排序:线c从最后打印(因此在顶部)到先打印(因此在底部).
但是,传说也改变了秩序!
如何保留左图中的图例顺序,但修改行打印顺序以匹配右图的顺序?
我知道在混合效应模型中将连续或数字变量作为随机效应并没有多大意义(例如,请参阅此处)。
但我想知道的是,是否lme4::lmer或nlme::lme在 R 中故意阻止你这样做......
具体来说,我要问的是:如果我提供lmer(或lme)任何非因素(非分类)变量作为随机效应,函数是否会自动将其视为一个因素?
插入factor()直接进入11聚物(如当使用常规方法lm)产生以下错误:
lmer(y ~ z + (1|factor(x)), data = dat)
Error: couldn't evaluate grouping factor factor(x) within model frame: try adding grouping factor to data frame explicitly if possible
Run Code Online (Sandbox Code Playgroud)
虽然上面的错误提到直接向数据添加分组因子,但它没有指定所述分组因子是否需要是一个因子(或者这可能是选择一词隐含的)?
我知道直接从我的数据创建一个新的因子类变量相当简单,但我很好奇在使用lmer(或lme)时是否真的有必要。
假设我有data.frame df
df<-data.frame(a=1:5,b=101:105,c=201:205)
Run Code Online (Sandbox Code Playgroud)
我是否可以调用此数据的子集,同时在运行中对其中一列(或行)执行某种修改(例如,算术运算)?
例如,如果我想返回第一列和第二列df但返回第1列值的日志.是否有一些符号可以修改df[,1:2]以便随时生成以下内容?:
a b
>1 0.0000000 101
>2 0.6931472 102
>3 1.0986123 103
>4 1.3862944 104
>5 1.6094379 105
Run Code Online (Sandbox Code Playgroud) 我有一个带有两个数字的向量(或矩阵等).
是否有功能或其他简短的"单线"技巧使这些数字成为包容性序列?
例如:
如果我有一个包含数字1和15的向量.我想快速应用一个函数(或技巧)来生成一个包含1:15(1,2,3,4,5,6 ... 15)的新向量
我知道我可以使用该seq函数来创建序列,但这需要我将矢量(或矩阵等)中的两个数字写成"from"和"to".
例:
dat <- data.frame(a = 1:5, b = 1:5, c = 1:5, d = 1:5, e = 1:5, f = 1:5)
#Too messy/long/time-consuming if my column names are longer/more complex:
names(dat)[names(dat) %in% c('a','b','c','d','e')]
#Too much coding text (I'm assuming it can be done simpler):
names(dat)[seq(from = which(names(dat) == 'a'), to = which(names(dat) == 'e'))]
#So how could I do something like the sequence example, but with less text?
#perhaps …Run Code Online (Sandbox Code Playgroud) 我在 Rstudio 中使用 rmarkdown (1.4) / knitr (1.15.1) 来创建 R markdown HTML 页面。我正在将闪亮的文件合并到文件中以制作交互式文档(通过runtime: shiny)。
当我尝试从 Shiny 运行示例时,出现错误:
```{r, eval=TRUE,chunk_title='Shiny_Example'}
runExample("01_hello")
```
Run Code Online (Sandbox Code Playgroud)
错误:无法
runApp()从 内部调用runApp()。如果您的应用程序代码包含runApp(),请将其删除。
如果我在 R markdown 代码块之外运行代码,我可以让应用程序加载得很好(即使在 Rstudio 的同一会话中)。
我确实注意到runExample代码使用runApp而不是shinyapp.
是该我的问题的根源在哪里?或者我可能做错了什么?
我的代码:
---
title: "Shiny Not Working"
output: html_document
runtime: shiny
---
```{r, eval=TRUE,chunk_title='Shiny_Example'}
library(shiny)
runExample("01_hello")
```
Run Code Online (Sandbox Code Playgroud)
带有堆栈跟踪的完整错误:
Warning: Error in runApp: Can't call `runApp()` from within `runApp()`.
If your application code contains `runApp()`, …Run Code Online (Sandbox Code Playgroud) 我在 Shiny 的 UI 列中有两个fluidRows。
我希望顶行上方有一点空间,但我想消除行之间的任何空间。
我已经尝试过div, tags, 和各种各样的样式参数,比如margin: 0pxand padding: 0px ...,但我无法得到相应的间距。
下面是一个例子:
ui <- fluidPage(
fluidRow(
column(1,offset=0,
div(style = "font-size: 10px; padding: 14px 0px; margin:0%",
fluidRow(
sliderInput(inputId = "sizeSlide", label = "Sizing", value = 10, min = 1,max = 20)
)
),
div(style = "font-size: 10px; padding: 0px 0px; margin:0px",
fluidRow(
radioButtons(inputId = "greatORless", label = "DBH Limiter", choices = c(">", "<"), selected = ">")
)
)
)
)
) …Run Code Online (Sandbox Code Playgroud)