这与上一个关于 SO 的问题有关:roll data.table with rollends
鉴于数据...
library(data.table)
dt1 = data.table(Date=seq(from=as.Date("2013-01-03"),
to=as.Date("2013-06-27"), by="1 week"),
key="Date")[, ind:=.I]
dt2 = data.table(Date=seq(from=as.Date("2013-01-01"),
to=as.Date("2013-06-30"), by="1 day"),
key="Date")
Run Code Online (Sandbox Code Playgroud)
我尝试将每周数据点向前和向后移动一天......
dt1[dt2, roll=1][dt2, roll=-1]
Run Code Online (Sandbox Code Playgroud)
...但只有第一个 roll join (forward)似乎有效并且roll=-1被忽略:
Date ind
1: 2013-01-01 NA
2: 2013-01-02 NA
3: 2013-01-03 1
4: 2013-01-04 1
5: 2013-01-05 NA
---
177: 2013-06-26 NA
178: 2013-06-27 26
179: 2013-06-28 26
180: 2013-06-29 NA
181: 2013-06-30 NA
Run Code Online (Sandbox Code Playgroud)
当我颠倒顺序时,效果相同:
dt1[dt2, roll=-1][dt2, roll=1]
Date ind
1: 2013-01-01 NA
2: …Run Code Online (Sandbox Code Playgroud) 我试图复制这个优秀的页面.
当我从GitHub编织markdown文件retail.Rmd时,使用RStudio (v0.98.729),我收到错误信息:
输出文件:retail.knit.md
G:/ R/RStudio/bin/pandoc/pandoc retail.utf8.md - to html - from markdown + autolink_bare_uris + ascii_identifiers + tex_math_single_backslash-implicit_figures --output retail.html --filter G:/ R/RStudio/bin/pandoc/pandoc-citeproc --section-divs --smart --self-contained --template G:\ R\library\rmarkdown\rmd\h\default.html --variable jquery:G:\ R\library\rmarkdown\rmd\h\jquery-1.10.2 - 变量引导程序:G:\ R\library\rmarkdown\rmd\h\bootstrap-3.0.3 - 变量主题:G:\ R\library\rmarkdown\rmd\h\bootstrap-3.0.3\css\bootstrap.min.css --no-highlight --variable highlightjs = G:\ R\library\rmarkdown\rmd\h\highlight --mathjax --variable mathjax-url:https :?//c328740.ssl.cf1.rackcdn.com/mathjax/latest/MathJax.js配置= TEX-AMS-MML_HTMLorMML
堆栈空间溢出:当前大小为16777216字节.使用`+ RTS -Ksize -RTS'来增加它.
错误:pandoc文档转换失败执行暂停
我怀疑错误与底层数据的大小(8.6MB)有关,因为当我执行以下操作并再次编织时,错误消息将消失:
french_industry_xts <- french_industry_xts[1:10000,]
Run Code Online (Sandbox Code Playgroud)
如错误消息所示,如何增加堆栈空间的大小?
让我们:
DT1 <- data.table(iris)
DT2 <- DT1 # both reference the same memory location though
DT3 <- copy(DT1)
Run Code Online (Sandbox Code Playgroud)
问题:有没有办法检查是否DT2继续引用相同的内存位置DT1?
像这样的伪函数:
mem.identical(DT2, DT1) # should return TRUE
mem.identical(DT3, DT1) # should return FALSE
Run Code Online (Sandbox Code Playgroud)
不幸的是,identical或者all.equal不为此目的而工作,因为
identical(DT1,DT3) # gives TRUE
Run Code Online (Sandbox Code Playgroud)
只有在引入一些变化后,才能使用identical以下方法检测差异:
DT1[,Test:=1] # introduces change to DT1 directly, to DT2 indirectly
identical(DT1,DT2) # TRUE - proves that DT2 is linked with DT1
identical(DT1,DT3) # FALSE - DT1 and DT3 are clearly decoupled
Run Code Online (Sandbox Code Playgroud) 假设有:
DT = data.table(a=1, b=2, "a+b"=8)
Run Code Online (Sandbox Code Playgroud)
并且有变量col="a+b"引用第三列DT
如何通过引用对该列执行操作?比方说,我要乘col的2,所以在上面的例子的结果应该是8*2=16,不(1+2)*2=6
例如,这显然不起作用:
DT[, c:=as.name(col)*2]
Run Code Online (Sandbox Code Playgroud) 我正在编写一个在特定路径中加载数据库并对其进行一些处理的aq脚本。db的位置当前在脚本中进行了硬编码,但是我想将db路径作为参数传递,并从变量的路径中加载它。
当前看起来像这样:
q) \l /path/to/dbDir #Works
Run Code Online (Sandbox Code Playgroud)
我发现.Ql应该让我们使用变量来执行此操作,因此我尝试在脚本中使用以下内容,
dbPath:`$.z.x 0
.Q.l hsym dbPath #Fails
Run Code Online (Sandbox Code Playgroud)
当使用参数/ path / to / dbDir运行时,该脚本始终会因一些不可读的内容而失败,并且:
':/path/to/dbDir: No such file or directory
Run Code Online (Sandbox Code Playgroud)
有人可以帮忙吗?
是否可以通过编程方式获取当前的 RStudio 查看器窗格尺寸?
本文介绍了如何设置它们(仅高度):
https://support.rstudio.com/hc/en-us/articles/202133558-Extending-RStudio-with-the-Viewer-Pane
有数据:
DT = structure(list(PE_RATIO = c(NA, 18.3468544431322, 21.8536295107188, NA, NA, NA), DIVIDEND_YIELD =c(NA, NA, 0.5283019, 1.06737822831035, NA, 0.55751900359546), DollarExposure = c(6765.12578958248, 95958.3106724681, 96328.1628155842, 291638.734002894, 170983.200676477, 185115.042371833)), .Names =c("PE_RATIO", "DIVIDEND_YIELD", "DollarExposure"), row.names = c(NA, -6L), class = c("data.table","data.frame"))
DT
# PE_RATIO DIVIDEND_YIELD DollarExposure
# 1: NA NA 6765.126
# 2: 18.34685 NA 95958.311
# 3: 21.85363 0.5283019 96328.163
# 4: NA 1.0673782 291638.734
# 5: NA NA 170983.201
# 6: NA 0.5575190 185115.042
Run Code Online (Sandbox Code Playgroud)
我想计算多个变量(此处PE_RATIO和DIVIDEND_YIELD)的可用值的加权比例(称为"捕获" ).我可以在单独的语句中做到这一点,每个变量一个语句: …
请考虑下表:
myTable:
a b
-------
1
2
3 10
4 50
5 30
Run Code Online (Sandbox Code Playgroud)
如何b用零替换空单元格?结果将是:
a b
-------
1 0
2 0
3 10
4 50
5 30
Run Code Online (Sandbox Code Playgroud)
现在我正在做:
myTable: update b:{$[x~0Ni;0;x]}'b from myTable
Run Code Online (Sandbox Code Playgroud)
但我想知道是否有更好/更容易的解决方案.
aj[`time`sym;trade;quote] 正在使用先前的报价值加入每笔交易。
我想做同样的联接,但是引用的下一个值而不是上一个。
我该如何实现?
快速提问,如何使用dplyr?
例如,给定数据:
D = data.frame(cat=rep(LETTERS[1:2], each=2), val=1:4)
# cat val
# 1 A 1
# 2 A 2
# 3 B 3
# 4 B 4
Run Code Online (Sandbox Code Playgroud)
期望的结果应该是:
# cat weight
# 1 A 0.3 # (1+2)/10
# 2 B 0.7 # (3+4)/10
Run Code Online (Sandbox Code Playgroud)
还有什么比以下更简洁?
D %>%
mutate(total=sum(val)) %>%
group_by(cat) %>%
summarise(weight=sum(val/total))
Run Code Online (Sandbox Code Playgroud)