您好,我正在使用 {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) 我想每 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?
我有一个很宽的时间序列数据框,并且以个股数据作为列名称。我想将此数据帧转换为长格式,而不取消查看数据属于哪个股票的能力。
这是下面的数据。
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)
感谢您的帮助
我正在尝试创建一个购买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)
提前致谢
我有一个数据框。在我的数据集中。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) 我有一个数据框,我希望通过第一个“.”将一列(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...”
谢谢
很抱歉再次问这个问题,但我真的需要解决这个问题(即将达到我在shinyapps.io 上的最大数据限制)。这是我上一个问题的链接 上一个堆栈问题
这是我的演示应用程序的链接。演示应用程序托管在 ShinyApps.io您会注意到该应用程序不会超时。例如,这是我今天这个应用程序的日志。
我已经尝试了上一个问题中向我推荐的所有内容以及timeOut在shinymanager::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) 我有一个具有两列的数据帧,Ticker和Date。对于每个日期观察,我想创建一个日期序列,该日期序列可以从原始日期追溯到原始日期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) 我正在研究基本 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) 我有两个不同长度的数据帧。两个数据框都包含日期。我想内部加入最接近的日期列,而不用继续。例如,如果“ 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 ×10
tidyverse ×5
data.table ×4
dplyr ×4
quantmod ×2
shiny ×2
bs4dash ×1
command-line ×1
dataframe ×1
quantstrat ×1
sass ×1
shinyjs ×1
windows-10 ×1
xts ×1