我在使用apply函数时遇到一些问题,在不需要时将参数传递给函数.我知道apply不知道如何处理可选参数,只是在函数上传递它们.
但无论如何,这就是我想做的事情:
首先,我想指定一个我想要使用的函数列表.
functions <- list(length, sum)
Run Code Online (Sandbox Code Playgroud)
然后我想创建一个在数据集上应用这些指定函数的函数.
myFunc <- function(data, functions) {
for (i in 1:length(functions)) print(apply(X=data, MARGIN=2, FUN=functions[[i]]))
}
Run Code Online (Sandbox Code Playgroud)
这很好用.
data <- cbind(rnorm(100), rnorm(100))
myFunc(data, functions)
[1] 100 100
[1] -0.5758939 -5.1311173
Run Code Online (Sandbox Code Playgroud)
但我还想为一些函数使用额外的参数,例如
power <- function(x, p) x^p
Run Code Online (Sandbox Code Playgroud)
哪个不能按我的意愿工作.如果我修改myFunc为:
myFunc <- function(data, functions, ...) {
for (i in 1:length(functions)) print(apply(X=data, MARGIN=2, FUN=functions[[i]], ...))
}
Run Code Online (Sandbox Code Playgroud)
functions 如
functions <- list(length, sum, power)
Run Code Online (Sandbox Code Playgroud)
然后尝试我得到的功能
myFunc(data, functions, p=2)
Error in FUN(newX[, i], ...) :
2 arguments passed to 'length' …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用facet_wrap和ggplot2为绘图添加多个标题.假设你有两年的季度数据,并想要将季度数据与两个主要标题进行图形比较; 2014年和2015年,以及各季度的标题.
我走到这一步:
data <- rnorm(10)
A1 <- data.frame("Y"=data, "X"=1:10, "Q"=1, "year"=2014)
A2 <- data.frame("Y"=data, "X"=1:10, "Q"=2, "year"=2014)
A3 <- data.frame("Y"=data, "X"=1:10, "Q"=3, "year"=2014)
A4 <- data.frame("Y"=data, "X"=1:10, "Q"=4, "year"=2014)
N1 <- data.frame("Y"=data, "X"=1:10, "Q"=1, "year"=2015)
N2 <- data.frame("Y"=data, "X"=1:10, "Q"=2, "year"=2015)
N3 <- data.frame("Y"=data, "X"=1:10, "Q"=3, "year"=2015)
N4 <- data.frame("Y"=data, "X"=1:10, "Q"=4, "year"=2015)
A <- rbind(A1, A2, A3, A4)
N <- rbind(N1, N2, N3, N4)
tmp <- data.frame(rbind(A, N))
ggplot(data=tmp, aes(x=X, y=Y)) + geom_line() + facet_wrap(~year + …Run Code Online (Sandbox Code Playgroud) 我试图弄清楚如何结合网格布局、行标签集和在 Markdown / flexdashboard 中滚动的能力。
我想要实现的是 Tab 3 应该在 Tab 1 & 2 的右侧,并且能够向下滚动到 Tab 4-6(其中 Tab 6 应该在 4/5 的右侧)。像这样的东西:
这可能吗?
---
title: "Test"
output:
flexdashboard::flex_dashboard:
orientation: row
vertical_layout: scroll
---
```{r setup, include=FALSE}
library(flexdashboard)
```
A {data-orientation=rows}
===================================================
Row {data-width=500 data-height=400 .tabset}
-----------------------------------------------------------------------
### Tab 1 {data-height=400 data-width=500}
```{r}
plot(rnorm(10))
```
### Tab 2 {data-height=400 data-width=500}
```{r}
plot(rnorm(10))
```
Column
-----------------------------------------------------------------------
### Tab 3 {data-height=400 data-width=300}
Some text
Row {data-width=500 data-height=400 .tabset}
-----------------------------------------------------------------------
### Tab 4 {data-height=400 data-width=500} …Run Code Online (Sandbox Code Playgroud)