我正在熟悉ggvis,我正试图在闪亮中使用它.我无法理解ggvis如何从反应性Shiny表达式中获取数据.这是ggvis GitHub存储库的基本应用程序:
ui.R:
shinyUI(pageWithSidebar(
div(),
sidebarPanel(
sliderInput("n", "Number of points", min = 1, max = nrow(mtcars),
value = 10, step = 1),
uiOutput("plot_ui")
),
mainPanel(
ggvisOutput("plot"),
tableOutput("mtc_table")
)
))
Run Code Online (Sandbox Code Playgroud)
server.R:
library(ggvis)
shinyServer(function(input, output, session) {
# A reactive subset of mtcars
mtc <- reactive({ mtcars[1:input$n, ] })
# A simple visualisation. In shiny apps, need to register observers
# and tell shiny where to put the controls
mtc %>%
ggvis(~wt, ~mpg) %>%
layer_points() %>%
bind_shiny("plot", "plot_ui")
output$mtc_table <- renderTable({
mtc()[, …Run Code Online (Sandbox Code Playgroud) 我正在写一个R包,我想forecast从包预测中导入泛型函数.我的包提供了方法forecast.myobj.我有 forecast在Imports:包中的DESCRIPTION文件和我的函数定义如下:
##' @export
forecast.myobj <- function(x) {
}
Run Code Online (Sandbox Code Playgroud)
我正在使用devtools 包(版本1.5)来构建包.生成的NAMESPACE具有以下内容
S3method(forecast, myobj)
importFrom(forecast, forecast)
Run Code Online (Sandbox Code Playgroud)
但是,当我在干净的R会话中加载我的包时,函数forecast不可用.但有趣的是,我可以看到的帮助页面forecast,并forecast.myobj和我可以通过访问这些功能forecast::forecast和mypackage:::forecast.myobj.是否有可能forecast在不依赖包装的情况下向用户提供forecast?我检查了文档,并在这里回顾了一堆类似的问题,但我没有找到明确的否定或肯定的答案.
这更像是一个初学者的问题.说我有以下代码:
library("multicore")
library("iterators")
library("foreach")
library("doMC")
registerDoMC(16)
foreach(i in 1:M) %dopar% {
##do stuff
}
Run Code Online (Sandbox Code Playgroud)
然后,此代码将在16个核心上运行(如果可用).现在,如果我理解正确,使用Amazon EC2,在一个实例上,我依赖于实例只有几个核心.因此,如果我想在16个内核上运行模拟,我需要使用多个实例,这意味着我理解启动新的R进程.但是我需要在R之外编写额外的代码来收集结果.
所以我的问题是,是否有一个R包,它允许从R内启动EC2实例,自动分配这些实例之间的负载,并在初始R启动时收集结果?
假设我有一个双变量离散分布,即概率值P(X = i,Y = j)表,i = 1,... n和j = 1,... m.如何从这样的分布中生成随机样本(X_k,Y_k),k = 1,... N?也许有一个准备好的R函数,如:
sample(100,prob=biprob)
Run Code Online (Sandbox Code Playgroud)
biprob是2维矩阵?
一种直观的采样方法如下.假设我们有一个data.frame
dt=data.frame(X=x,Y=y,P=pij)
Run Code Online (Sandbox Code Playgroud)
x和y来自哪里
expand.grid(x=1:n,y=1:m)
Run Code Online (Sandbox Code Playgroud)
和pij是P(X = i,Y = j).
然后我们得到大小为N的样本(Xs,Ys),方法如下:
set.seed(1000)
Xs <- sample(dt$X,size=N,prob=dt$P)
set.seed(1000)
Ys <- sample(dt$Y,size=N,prob=dt$P)
Run Code Online (Sandbox Code Playgroud)
我使用set.seed()来模拟"双变量".直观地说,我应该得到类似于我需要的东西.我不确定这是否正确.因此问题:)
另一种方法是使用吉布斯采样,边际分布很容易计算.
我试过谷歌搜索,但没有真正相关的东西出现.
假设我有以下公式:
fr <- formula(y~myfun(x)+z)
Run Code Online (Sandbox Code Playgroud)
给定对象fr在R中有一个函数返回myfun(x)?我(下面的代码)写了我自己的功能,基本上做什么,我需要的,但也许有这样做的一些标准的方式吗?
我的功能代码:
selectmds <- function(expr,funcn) {
if(length(expr)>2) {
a <- expr[[2]]
b <- expr[[3]]
if(length(a)>1) {
if(as.name(a[[1]])==funcn) {
if(length(grep(funcn,all.names(b)))>0) {
return(list(a,selectmds(b,funcn)))
}
else return(list(a))
}
}
if(length(b)>1) {
if(as.name(b[[1]])==funcn) {
if(length(grep(funcn,all.names(a)))>0) {
return(list(b,selectmds(a,funcn)))
}
else return(list(b))
}
}
for(i in 2:length(expr)) {
if(length(grep(funcn,all.names(expr[[i]])))>0)return(selectmds(expr[[i]],funcn))
}
}
return(NULL)
}
Run Code Online (Sandbox Code Playgroud)
以下是几个例子:
> selectmds(formula(y~myfun(x)+z),"myfun")
[[1]]
myfun(x)
> unlist(selectmds(formula(y~myfun(x)+z+myfun(zz)),"myfun"))
[[1]]
myfun(zz)
[[2]]
myfun(x)
Run Code Online (Sandbox Code Playgroud) 下面是示例代码,它产生了有趣的输出:
> gg<-data.frame(x=c("a","b"),y=as.integer(c(1000,100000)))
> gg
x y
1 a 1000
2 b 100000
> apply(gg,1,paste,collapse="")
[1] "a 1000" "b100000"
> apply(gg[1,],1,paste,collapse="")
1
"a1000"
Run Code Online (Sandbox Code Playgroud)
在第一次apply运行中,R以某种方式知道如何填充额外的空格.它是如何做到的,是否有可能控制这种行为?
dplyrdo包中的函数通常生成列表。有没有办法根据输入为该列表分配名称?具体来说,我传递结果,并希望列表的名称能够指示列表元素对应的组。dogroup_by
这是我想要实现的玩具示例:
> it = data.frame(ind=c("a","a","b","b","c"),var1=c(1,2,3,4,5), var1=c(2,3,4,2,2))
> group_by(it,ind)%.%summarise(min(var1))
Source: local data frame [3 x 2]
ind min(var1)
1 c 5
2 b 3
3 a 1
Run Code Online (Sandbox Code Playgroud)
现在用do
> do(group_by(it,ind),function(x)min(x[,"var1"]))
[[1]]
[1] 5
[[2]]
[1] 3
[[3]]
[1] 1
Run Code Online (Sandbox Code Playgroud)
理想情况下,名称应该是c("c","b","a").
这可能吗?为什么dplyr会颠倒组的排序?请注意,在我的例子中,操作的结果do是一个lm对象。
编辑:评论要求提供现实的例子,这就是我的想法。我根据数据(虚拟代码)拟合模型:
res <- do(group_by(data,Index),lm,formula=y~x)
Run Code Online (Sandbox Code Playgroud)
现在我想做各种各样的事情,比如
sapply(res,coef)
Run Code Online (Sandbox Code Playgroud)
所以我想将结果与原始数据集相关联,在本例中与Index系数对应的内容相关联。
编辑2:可以通过以下函数实现所需的行为dlply:
dlply(it,~ind,function(d)min(d[,"var1"]))
$a
[1] 1
$b
[1] 3
$c
[1] 5
attr(,"split_type")
[1] …Run Code Online (Sandbox Code Playgroud) 下面的代码取自这里:
function +vi-git-st() {
local ahead behind remote
local -a gitstatus
# Are we on a remote-tracking branch?
remote=${$(git rev-parse --verify ${hook_com[branch]}@{upstream} \
--symbolic-full-name 2>/dev/null)/refs\/remotes\/}
if [[ -n ${remote} ]] ; then
# for git prior to 1.7
# ahead=$(git rev-list origin/${hook_com[branch]}..HEAD | wc -l)
ahead=$(git rev-list ${hook_com[branch]}@{upstream}..HEAD 2>/dev/null | wc -l)
(( $ahead )) && gitstatus+=( "${c3}+${ahead}${c2}" )
# for git prior to 1.7
# behind=$(git rev-list HEAD..origin/${hook_com[branch]} | wc -l)
behind=$(git rev-list HEAD..${hook_com[branch]}@{upstream} 2>/dev/null | wc …Run Code Online (Sandbox Code Playgroud)