小编Jor*_*ong的帖子

无法在闪亮中更改 bs4Dash“深色”皮肤主题背景

您好,我正在使用 {fresh} 主题包和 {bs4Dash}。我想做的是更改应用程序的主要背景。但是,看起来 bs4Dash 包不允许我在选择“深色”主题时更改主背景。一旦我将切换开关切换到“浅色”皮肤,就会显示所需的背景颜色。看来我无法控制深色模式背景。

下面是一张照片以及可复制的代码。出于示例目的,我希望当皮肤切换到深色模式时,背景颜色是下面代码中的浅蓝色。

在此输入图像描述

在此输入图像描述

library(bs4Dash)
library(shiny)
library(fresh)
# create the theme with a cyberpunk color palette
theme <- create_theme(
    bs4dash_vars(
        navbar_light_color = "#bec5cb",
        navbar_light_active_color = "#FFF",
        navbar_light_hover_color = "#FFF"
    ),
    bs4dash_yiq(
        contrasted_threshold = 10,
        text_dark = "#FFF",
        text_light = "#272c30"
    ),
    bs4dash_layout(
        main_bg = "#5E81AC"
    ),
    bs4dash_sidebar_light(
        bg = "#272c30",
        color = "#bec5cb",
        hover_color = "#FFF",
        submenu_bg = "#272c30",
        submenu_color = "#FFF",
        submenu_hover_color = "#FFF"
    ),
    bs4dash_status(
        primary = "#5E81AC", danger = "#BF616A", light = "#272c30"
    ), …
Run Code Online (Sandbox Code Playgroud)

r sass shiny bs4dash

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

使用 taskscheduleR 唤醒计算机以运行 R 脚本

我想每 30 分钟从我的本地 comp 运行一个脚本。大多数时候我都远离办公桌。我不想整天开着我的电脑。有什么方法可以做到这一点。

目前我有以下代码。当我的计算机运行时,代码运行良好。

library(taskscheduleR)

taskscheduler_create("docu", 
"C:/Users/jorda/OneDrive/Documents/first.R", 
"MINUTE", "23:15", modifier = 30, startdate = "2019/06/05")
Run Code Online (Sandbox Code Playgroud)

注意*我使用的是 Windows 10。

理想的解决方案是让计算机醒来运行代码,然后返回睡眠状态。

我正在使用此视频作为指导https://www.youtube.com/watch?v=UDKy5_SQy2o&t=213s

我有一个名为 task 的文件夹,它目前包含 2 个孩子:firstschedule.R 和 task1.bat。我的 .bat 文件是:

@echo off
R CMD BATCH #path to my file
Run Code Online (Sandbox Code Playgroud)

当我尝试打开文件时,会弹出一个显示 - 以管理员或其他用户身份运行。单击以管理员身份运行后,我收到另一个弹出窗口,询问我 Windows 是否可以对我的计算机进行更改。点击允许后。没发生什么事。我期待输出日志与所有输出一起弹出。我的 R 脚本很简单

x=10
y = x + 5
print(y)
Run Code Online (Sandbox Code Playgroud)

这是一个类似的更新教程。https://www.r-bloggers.com/how-to-run-r-from-the-task-scheduler/看来我很难找到这个 Rscript 文件。它是否在旧版本的 R 中使用但不适用于当前的 3.6.0?

我不确定我在这里做错了什么。谢谢你。 在此处输入图片说明

command-line r windows-10 taskscheduler

6
推荐指数
0
解决办法
757
查看次数

转置数据框并将列名称添加为 R 中的变量

我有一个很宽的时间序列数据框,并且以个股数据作为列名称。我想将此数据帧转换为长格式,而不取消查看数据属于哪个股票的能力。

这是下面的数据。

df = structure(list(Date = structure(c(1607922000, 1608008400), class = c("POSIXct", 
"POSIXt"), tzone = ""), AAPL.Close = c(0.32982465, 0.34001608
), MSFT.Close = c(0.26307234, 0.27235893), GS.Close = c(0.30742572, 
0.29825025), QQQ.Close = c(0.25350002, 0.24456267)), row.names = 1:2, class = "data.frame")


  Date        AAPL.Close MSFT.Close GS.Close QQQ.Close
1 2020-12-14  0.3298246  0.2630723 0.3074257 0.2535000
2 2020-12-15  0.3400161  0.2723589 0.2982502 0.2445627
Run Code Online (Sandbox Code Playgroud)

我希望新的数据框看起来像这样。

Date          Data     Ticker
2020-12-14   .3298     AAPL 
2020-12-15   .3400     AAPL
2020-12-14   .260      MSFT
2020-12-15   .27       MSFT
.
.
Run Code Online (Sandbox Code Playgroud)

感谢您的帮助

r dplyr data.table tidyverse

4
推荐指数
1
解决办法
1107
查看次数

尝试创建滚动期cummax

我正在尝试创建一个购买N期新高的函数。因此,如果我有一个向量:

  x = c(1, 2, 3, 4, 5, 1, 2, 3, 4, 5)
Run Code Online (Sandbox Code Playgroud)

我想把滚动期提高到3个周期。这就是我希望功能看起来的样子

 x =  c(1, 2, 3, 4, 5, 5, 5, 3, 4, 5)
Run Code Online (Sandbox Code Playgroud)

我试图在xts对象上执行此操作。这是我尝试过的:

    rollapplyr(SPY$SPY.Adjusted, width = 40, FUN = cummax)
    rollapply(SPY$SPY.Adjusted, width = 40, FUN = "cummax")
    rapply(SPY$SPY.Adjusted, width  = 40, FUN = cummax)
Run Code Online (Sandbox Code Playgroud)

我收到的错误是:

      Error in `dimnames<-.xts`(`*tmp*`, value = dn) : 
      length of 'dimnames' [2] not equal to array extent
Run Code Online (Sandbox Code Playgroud)

提前致谢

r xts quantmod performanceanalytics

3
推荐指数
1
解决办法
59
查看次数

每N列分割数据并使用R rbind

我有一个数据框。在我的数据集中。a,a1和a2是完全相同的变量。但是,当您在r中具有相同的名称时,它将在名称末尾自动添加1。

  df = data.frame(a = rnorm(4), b = rnorm(4), c = rnorm(4), a1 = rnorm(4), b1 = rnorm(4), c1 = rnorm(4), a2 = rnorm(4),
                b2 = rnorm(4), c2 = rnorm(4), date = seq(as.Date("2019-05-05"),as.Date("2019-05-08"), 1))
  print(df)



             a          b          c         a1         b1         a2         b2         c2       date
1 -1.0938097  1.3948486  1.2805904  1.6187439  1.0200681 -1.4335761 -0.4583526  0.3825598 2019-05-05
2 -0.3195004 -1.1281779 -2.1905902 -1.1693616 -0.9612850 -0.7502631 -0.5637997  0.3072459 2019-05-06
3 -0.2135026  0.7015042 -0.8271073 -0.1115213 -1.0378507  0.5620332 -2.0615450  1.7363142 2019-05-07
4  1.0413566 -1.1983207  0.9262545  0.6454741 -0.7874252 …
Run Code Online (Sandbox Code Playgroud)

r dplyr data.table tidyverse

3
推荐指数
1
解决办法
73
查看次数

分开在第一个周期 R

我有一个数据框,我希望通过第一个“.”将一列(var)分成两列。var 中的值目前有 2 个句点。我想将新名称称为“第一”和“第二”。我已经添加了我的数据框以及它的屏幕截图。最后我展示了我的尝试。

在此处输入图片说明

df = structure(list(Date.Dates = c("42370", "42373", "42374", "42375", 
"42376", "42377"), var = c("SHOP US Equity.30DAY_IMPVOL_100.0%MNY_DF", 
"SHOP US Equity.30DAY_IMPVOL_100.0%MNY_DF", "SHOP US Equity.30DAY_IMPVOL_100.0%MNY_DF", 
"SHOP US Equity.30DAY_IMPVOL_100.0%MNY_DF", "SHOP US Equity.30DAY_IMPVOL_100.0%MNY_DF", 
"SHOP US Equity.30DAY_IMPVOL_100.0%MNY_DF"), val = c("59.835999999999999", 
"67.208600000000004", "61.522599999999997", "63.298900000000003", 
"66.243200000000002", "69.282899999999998")), row.names = c(NA, 
-6L), class = c("tbl_df", "tbl", "data.frame"))


library(tidyverse)
df %>%
      gather(var, val, -Date.Dates) %>%
      separate(var, c("First", "Second", sep = "/^([^.]+)/")) 
Run Code Online (Sandbox Code Playgroud)

我们应该有一个名为“First”的新列,其中包含值“SHOP US Equity”。名为“Second”的第二列包含值“30DAY_IMPVOL...”

谢谢

r dplyr tidyverse

3
推荐指数
1
解决办法
897
查看次数

ShinyManager 身份验证屏幕不会超时

很抱歉再次问这个问题,但我真的需要解决这个问题(即将达到我在shinyapps.io 上的最大数据限制)。这是我上一个问题的链接 上一个堆栈问题 这是我的演示应用程序的链接。演示应用程序托管在 ShinyApps.io您会注意到该应用程序不会超时。例如,这是我今天这个应用程序的日志。在此输入图像描述

我已经尝试了上一个问题中向我推荐的所有内容以及timeOutshinymanager::secure_server()函数中包含参数。

问题似乎在于,shinyapps.io 在 UI 上设置了一个不活动计时器。一旦 UI 处于非活动状态,它就会启动进程超时R。然而,在我们的例子中,UI 在身份验证之前不会启动。这意味着我们的服务器继续运行。

像设置超时 ( setTimeout()) 这样的东西将是一个很好的选择。例如,如果用户在 5 分钟内未进行身份验证,则超时。我最初尝试了 while 循环,但结果并没有按计划进行。

我正在寻找一种在没有活动的情况下使服务器超时的方法。这是我的代码的一个玩具示例。最后,这是 github 上的shinymanager包的链接。闪亮经理

乌鲁木齐

ui <- dashboardPage(
   #My UI page and functions
 )
shinymanager::secure_app(ui)
Run Code Online (Sandbox Code Playgroud)

服务器R

function(input, output, session){
 auth = secure_server(check_credentials = check_credentials(df)) #df is my client database

 observeEvent(auth$user,{
    #server functions. This only gets run once the user authenticates
  }

}
Run Code Online (Sandbox Code Playgroud)

r shiny shinydashboard shinyjs

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

为数据框中的每个日期插入日期序列

我有一个具有两列的数据帧,TickerDate。对于每个日期观察,我想创建一个日期序列,该日期序列可以从原始日期追溯到原始日期3天(例如seq(OriginalDate, OriginalDate-3, by=1)

例如:

df = data.frame(Ticker = c("AAPL", "MSFT"), Date = c("2019-01-05", "2019-02-10"))

print(df)

Ticker Date
AAPL   2019-01-05
MSFT   2019-02-10
Run Code Online (Sandbox Code Playgroud)

我希望新的数据框如下所示:

print(df)

Ticker Date        Date_Sequence
AAPL   2019-01-05  2019-01-05 #original Date
AAPL   2019-01-05  2019-01-04 #original Date -1
AAPL   2019-01-05  2019-01-03 #original Date -2
MSFT   2019-02-10  2019-02-10 
MSFT   2019-02-10  2019-02-09
MSFT   2019-02-10  2019-02-08
Run Code Online (Sandbox Code Playgroud)

r dataframe dplyr data.table tidyverse

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

一旦我在 Quantstrat R 中建仓,就停止添加更多仓位

我正在研究基本 RSI 交易信号。当股票低于 20 RSI 时买入 100 股,当股票高于 80 RSI 时平仓。

发生的情况是,一旦股票跌破 20,我就买入 100 股,如果股票再次跌破 20,而 RSI 没有首先达到 80,我最终会再买入 100 股(总共 200 股)。

一旦我有了一个仓位,我就不想再增加了。谢谢。

rm.strat(portfolio.st)
rm.strat(strategy.st)
rm.strat(account.st)

#setup
Sys.setenv(TZ = "UTC")
stock.str = "AAPL"
currency('USD')
stock("AAPL", currency= "USD", multiplier = 1)

initDate = "2010-01-01"
startDate = "2011-01-01"
to = Sys.Date()
initEq = 100000

portfolio.st = account.st = strategy.st = 'rsi'

getSymbols("AAPL", from = initDate)

initPortf(portfolio.st, symbols = stock.str,
          initDate = initDate)
initAcct(account.st,
         portfolio.st,
         initDate = initDate, initEq = initEq)
initOrders(portfolio.st, …
Run Code Online (Sandbox Code Playgroud)

r quantmod quantstrat

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

在不经过R的情况下,以最接近的日期联接两个数据框

我有两个不同长度的数据帧。两个数据框都包含日期。我想内部加入最接近的日期列,而不用继续。例如,如果“ 2019-01-05”是日期,并且两个选项是“ 2019-01-06”和“ 2019-01-02”,则它与“ 2019-01-02”结合在一起。我尝试从data.table包中使用roll“ inf”,但没有得到想要的结果。这是我要按日期加入的2个玩具数据框。

我也想按行情栏对联接进行分组。在tidyverse中,代码类似于:

df1 %>% group_by(ticker) %>% inner_join(df2, by = "Date") #but choose the closest date without going over.


df1 = data.frame(ticker = c("AAPL", "AAPL", "MSFT", "MSFT"), date = c("2019-01-06", "2019-02-06", "2019-01-06", "2019-05-02"))

df2 = data.frame(ticker = c("AAPL", "AAPL", "AAPL", "MSFT", "MSFT", "MSFT"), date = c("2019-01-03", "2019-01-07" , "2019-02-06", "2019-01-05", "2019-01-07", "2019-05-02"), randomVar = rnorm(6))

print(df1)
 ticker       date
1   AAPL 2019-01-06
2   AAPL 2019-02-06
3   MSFT 2019-01-06
4   MSFT 2019-05-02


print(df2)
 ticker       date  randomVar
1   AAPL …
Run Code Online (Sandbox Code Playgroud)

r data.table tidyverse

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