小编h.l*_*l.m的帖子

使用rolling_apply进行pandas的Python自定义函数

我想使用该pandas.rolling_apply函数在滚动窗口的基础上应用我自己的自定义函数.

但是我的函数需要两个参数,并且还有两个输出.这可能吗?

以下是一个可重复的最小例子......

import pandas as pd
import numpy as np
import random
tmp  = pd.DataFrame(np.random.randn(2000,2)/10000, 
                    index=pd.date_range('2001-01-01',periods=2000),
                    columns=['A','B'])

def gm(df,p):
    v =(((df+1).cumprod())-1)*p
    return v.iloc[-1]

# an example output when subsetting for just 2001
gm(tmp['2001'],5)


# the aim is to do it on a rolling basis over a 50 day window
# whilst also getting both outputs and also allows me to add in the parameter p=5
# or any other number I want p to be... 
pd.rolling_apply(tmp,50,gm)
Run Code Online (Sandbox Code Playgroud)

导致错误...因为gm有两个参数...... …

python pandas

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

如何在R中生成六边形网格

我希望能够创建一个覆盖另一个SpatialPolygon的SpatialPolygons对象(这是一个六边形网格).

我希望所有六边形的直径都是1km(理想情况下我可以改变它),并且所有的六边形一起覆盖整个物体.以下方法似乎只涵盖了少量......

以下是我尝试使用该sp软件包:

require(sp)
data(meuse.riv)
meuse.sr = SpatialPolygons(list(Polygons(list(Polygon(meuse.riv)), "x")))
plot(meuse.sr)

HexPts <-spsample(meuse.sr,type="hexagonal",cellsize=1000)
HexPols <- HexPoints2SpatialPolygons(HexPts)
plot(HexPols, add=TRUE)
Run Code Online (Sandbox Code Playgroud)

我们非常感谢任何帮助...

r r-sp

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

闪亮的条件导航列表

使用R和Shiny,我使用这个问题的答案作为我的代码的基础,但将作为一个很好的最小可重复的例子.但是我希望我的闪亮应用程序在点击完成按钮后使用a navlistPanel更改为下一个tabPanel,这可能吗?

我认为使用id参数并使用输入$ id引用它,因为它在文档中提到可能有效...但不知道如何完成.任何帮助将非常感激.

r shiny

9
推荐指数
1
解决办法
340
查看次数

点击或悬停在上,可以反应性地改变信息框的颜色

我想用的reactiveValue,observe,observeEvent框架shinyshinydashboard能够点击时被动地改变信息框的颜色.

当我将鼠标悬停在infoBox上时,我还希望它能够在弹出框中显示带有一些文本的图像.

作为可重复示例的代码基础,请参阅此内容

但是代码可以在下面找到:

 library(shinydashboard)

  ui <- dashboardPage(
    dashboardHeader(title = "Info boxes"),
    dashboardSidebar(),
    dashboardBody(
      # infoBoxes with fill=FALSE
      fluidRow(
        # A static infoBox
        infoBox("New Orders", 10 * 2, icon = icon("credit-card")),
        # Dynamic infoBoxes
        infoBoxOutput("progressBox"),
        infoBoxOutput("approvalBox")
      ),

      # infoBoxes with fill=TRUE
      fluidRow(
        infoBox("New Orders", 10 * 2, icon = icon("credit-card"), fill = TRUE),
        infoBoxOutput("progressBox2"),
        infoBoxOutput("approvalBox2")
      ),

      fluidRow(
        # Clicking this will increment the progress amount
        box(width = 4, actionButton("count", …
Run Code Online (Sandbox Code Playgroud)

html javascript r shiny

9
推荐指数
1
解决办法
1309
查看次数

在一个ggplot上使用两个刻度颜色渐变

我想将散点图上的点的颜色比例渐变与图表上某些文本的颜色比例渐变结合起来.我可以单独执行它们,如下面的示例所示,但我似乎无法将它们放在一起......有没有办法做到这一点?

这是我想要组合的两种类型图(p和p1)的示例代码

l <- data.frame(prev=rnorm(1266), 
            aft=rnorm(1266), 
            day=as.factor(wday(sample(c(2:6),1266,replace=TRUE),abbr=TRUE, label=TRUE)), 
            month=as.factor(month(Sys.Date()+months(sample(0:11,1266,replace=TRUE)),abbr=TRUE, label=TRUE)), 
            ind=c(1:1266))
cors <- ddply(l, c("month", "day"), summarise, cor = round(cor(prev, aft), 3))


# below the text gains the colour gradient
p <- ggplot(l, aes(x=prev, y=aft)) + 
    geom_point() + 
    scale_colour_gradient(low = "red", high="blue")+ 
    facet_grid(day~month, scales="free_x")+
    geom_text(data=cors,aes(label=paste("r= ",cor,sep=""), size=abs(cor), colour=cor), x=Inf, y=Inf, vjust=1, hjust=1, show_guide=FALSE)+
    geom_hline(aes(yintercept=0))+
    geom_smooth(method="loess")
p

# below the points gain the colour gradient
p1 <- ggplot(l, aes(x=prev, y=aft)) + 
    geom_point(aes(colour=ind)) + 
    scale_colour_gradient("gray")+ 
    facet_grid(day~month, scales="free_x")+
    geom_text(data=cors,aes(label=paste("r= ",cor,sep=""), size=abs(cor), colour=cor), x=Inf, …
Run Code Online (Sandbox Code Playgroud)

gradient r colors scale ggplot2

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

devtools roxygen包创建和rd文档

我是roxygen的新手,我很难看到如何使用它来快速创建一个新的/自定义包.

即我想知道最低要求是制作一个名为package1using 的包devtools,roxygen2/3以便我可以运行命令

require(package1)
fun1(20)
fun2(20)
Run Code Online (Sandbox Code Playgroud)

分别生成2000和4000个随机法线

让我们举一个最简单的例子.

如果我有两个功能fun1fun2

fun1 <- function(x){
    rnorm(100*x)
}
Run Code Online (Sandbox Code Playgroud)

fun2 <- function(y){
    rnorm(200*y)
}
Run Code Online (Sandbox Code Playgroud)

params是数字,返回值是数字.我很确定这不是一个S3方法,让我们调用标题fun1和fun2 ....我不太确定我需要提供的其他信息.我可以将fun1和fun2放在单独的.R文件中并添加abit #'但不确定包含roxygen的所有相关要求,也不确定要包含哪些相关requiremetns以及如何使用它来创建rd文档以与包一起使用.我假设名称空间只有名称fun1和fun2?包裹描述只是一些与我有关的通用信息......以及包裹的功能?

任何一步一步的指南都会很高兴收到.

编辑:以下是我开始的距离......

我可以得到以下内容来创建一个pacakge ...但是不能使用roxygen来制作文档......

package.skeleton(list = c("fun1","fun2"), name = "package1")
Run Code Online (Sandbox Code Playgroud)

这里是我不确定我是否错过了一堆步骤......

roxygenise("package1")
Run Code Online (Sandbox Code Playgroud)

因此,当尝试安装时,我收到以下错误消息

system("R CMD INSTALL package1")
* installing to library ‘/Library/Frameworks/R.framework/Versions/2.15/Resources/library’
* installing *source* package ‘package1’ ...
** R
** preparing package for lazy loading
** help
Warning: /path.to.package/package1/man/package1-package.Rd:32: All text must be in …
Run Code Online (Sandbox Code Playgroud)

r devtools rd roxygen roxygen2

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

是否可以减少或清除R的全局字符串缓存的大小?

这与我之前解决R中释放内存的问题有关

并且想知道是否有可能减少或清除R的全局字符串缓存的大小?...我听说它只能上升?

如果有可能,你怎么做?

谢谢

r

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

R使用fread colClasses或跳过参数来读取没有列标题的csv

我想能够跳过被读成R经由列data.tablefread在v1.8.9功能.但我正在阅读的csv,没有列标题...这似乎是一个问题的fread ...有没有办法只指定我不想要特定的列?

是否更好地预先分配一个列名,然后让它读取它以便可以跳过它?

举个例子......

我从以下URL下载了数据

http://www.truefx.com/dev/data/2013/MAY-2013/AUDUSD-2013-05.zip

拉开它......

并使用fread将csv读入R并且它与csv扩展名具有几乎相同的文件名.

system.time(pp <- fread("AUDUSD-2013-05.csv",sep=","))
  user  system elapsed 
16.427   0.257  16.682 

head(pp)
       V1                    V2      V3      V4
1: AUD/USD 20130501 00:00:04.728 1.03693 1.03721
2: AUD/USD 20130501 00:00:21.540 1.03695 1.03721
3: AUD/USD 20130501 00:00:33.789 1.03694 1.03721
4: AUD/USD 20130501 00:00:37.499 1.03692 1.03724
5: AUD/USD 20130501 00:00:37.524 1.03697 1.03719
6: AUD/USD 20130501 00:00:39.789 1.03697 1.03717

str(pp)
Classes ‘data.table’ and 'data.frame':  4060762 obs. of  4 variables:
$ V1: chr  "AUD/USD" "AUD/USD" "AUD/USD" "AUD/USD" ... …
Run Code Online (Sandbox Code Playgroud)

r fread data.table import-csv

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

ggplot版本的chart.PerformanceSummary

我想charts.PerformanceSummaryPerformanceAnalytics包中提供一个"ggplot版本"的基本功能,因为我认为ggplot通常更漂亮,理论上在编辑图像方面更强大.我已经相当接近,但有一些问题,我想要一些帮助.即:

  1. 减少图例占用的空间量,当它上面有10行以上时会变得可怕/丑陋...(只是线条颜色和名称就足够了)
  2. 增加Daily_Returns facet的大小以匹配chart.PerformanceSummary的大小 PerformanceAnalytics
  3. 有一个选项可以指定在Daily_Returns facet的每日回复系列中显示哪个资产,而不是总是使用第一列,这比在 charts.PerformanceSummary

如果有更好的方法来做这个可能使用gridExtra而不是方面...我不会对那些让我看起来会更好看的人感到不利...

这里的问题是美学,而且我觉得潜在易操作,因为PerformanceAnalytics已经有一个很好的工作示例,我只想让它更漂亮/更专业......

除了这个奖励积分之外,我希望能够在每个资产的图表一侧或下方某处显示与之相关的一些性能统计数据......不太确定哪里最好显示或显示此信息.

此外,如果他们对此提出建议,我并不反对人们建议清理我的代码的部分.

这是我可重复的例子......

首先生成返回数据:

require(xts)
X.stock.rtns <- xts(rnorm(1000,0.00001,0.0003), Sys.Date()-(1000:1))
Y.stock.rtns <- xts(rnorm(1000,0.00003,0.0004), Sys.Date()-(1000:1))
Z.stock.rtns <- xts(rnorm(1000,0.00005,0.0005), Sys.Date()-(1000:1))
rtn.obj <- merge(X.stock.rtns , Y.stock.rtns, Z.stock.rtns)
colnames(rtn.obj) <- c("x.stock.rtns","y.stock.rtns","z.stock.rtns")
Run Code Online (Sandbox Code Playgroud)

我想复制以下结果的图像:

require(PerformanceAnalytics)
charts.PerformanceSummary(rtn.obj, geometric=TRUE)
Run Code Online (Sandbox Code Playgroud)

目标

这是我到目前为止的尝试......

gg.charts.PerformanceSummary <- function(rtn.obj, geometric=TRUE, main="",plot=TRUE){

    # load libraries
suppressPackageStartupMessages(require(ggplot2))
suppressPackageStartupMessages(require(scales))
suppressPackageStartupMessages(require(reshape))
suppressPackageStartupMessages(require(PerformanceAnalytics))
    # create function to clean returns if having NAs in data
    clean.rtn.xts <- function(univ.rtn.xts.obj,na.replace=0){
    univ.rtn.xts.obj[is.na(univ.rtn.xts.obj)]<- na.replace
    univ.rtn.xts.obj
}
    # Create cumulative …
Run Code Online (Sandbox Code Playgroud)

r ggplot2 performanceanalytics

7
推荐指数
2
解决办法
3904
查看次数

Shiny plotGoogleMaps Internet Explorer vs Chrome

我正在尝试使用在Internet Explorer和Google Chrome中使用Shiny工作时使用plotGoogleMaps,并且想知道我需要做些什么来修复它.

我正在使用的代码使用了另一个问题的答案

当Chrome是浏览器时,代码可以工作,但当IE是浏览器时,代码不起作用.

要在这里再次重复代码,它是:

library(plotGoogleMaps)
library(shiny)

runApp(list(
  ui = pageWithSidebar(
  headerPanel('Map'),
   sidebarPanel(""),
   mainPanel(uiOutput('mymap'))
   ),
   server = function(input, output){
   output$mymap <- renderUI({
      data(meuse)
      coordinates(meuse) = ~x+y
      proj4string(meuse) <- CRS("+init=epsg:28992")
      m <- plotGoogleMaps(meuse, filename = 'myMap1.html', openMap = F)
      tags$iframe(
         srcdoc = paste(readLines('myMap1.html'), collapse = '\n'),
         width = "100%",
        height = "600px"
       )
     })
   }
))
Run Code Online (Sandbox Code Playgroud)

鉴于该文件已创建,我认为这可能是一个加载问题.

一如往常,任何帮助将不胜感激

internet-explorer google-chrome r shiny

7
推荐指数
1
解决办法
723
查看次数