小编Wol*_* Wu的帖子

如何使用R CMD安装而不依赖检查?

我在R CMD INSTALL --build packageWindows电脑上运行.我的包导入了几个本身依赖于更多包的其他包.我在本地r_libs文件夹中安装了所有依赖项,一切正常.

现在有时我在不同的Windows计算机上有我的包源代码.在这台计算机上,我没有安装所有的依赖包.

当我尝试使用时R CMD INSTALL --build package,我得到了明显的" ERROR: dependencies 'package a', 'package b', etc, are not available for package".

我的问题是:我可以使用编译软件包R CMD INSTALL --build,而不依赖项检查不除去Import,并Depends在项目中的DESCRIPTION文件?

咨询后--help,我尝试了--no-test-load选项,但没有运气.

r

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

关于数据变更余额的复利计算

我有一个data.table,有一个平衡.余额基于每个期间的存款/取款.每个期间都有一个应该适用的利率.但是,我无法将利率与余额相结合,基本上将利率应用于余额,然后使用下一期间的更新余额来计算新值.

Balance_t1 = (0 + Deposit_t1)*(1+Interest_t1)

Balance_t2 = (Balance_t1 + Deposit_t2)*(1+Interest_t2)

Balance_t3 = (Balance_t2 + Deposit_t3)*(1+Interest_t3)
Run Code Online (Sandbox Code Playgroud)

我有以下内容 data.table

dtCash <- data.table(
  Deposit = c(100, 100, -300, 0), 
  Balance = c(100, 200, -100, -100),
  Interest=c(0.1, 0.01, 0.2, 0.1)
)
Run Code Online (Sandbox Code Playgroud)

结果将是:

dtCash <- data.table(
  Deposit = c(100, 100, -300, 0), 
  Balance = c(100, 200, -100, -100), 
  Interest=c(0.1, 0.01, 0.2, 0.1), 
  BalanceWithInterest = c(110, 212.1, -105.48, -116.028)
)
Run Code Online (Sandbox Code Playgroud)

如何在每个时段更新和引用更新的"余额"列?

r data.table

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

data.table结果在矢量扫描和二进制搜索之间的差异数据不同

这是来自data.table简介中的示例.见 http://cran.r-project.org/web/packages/data.table/vignettes/datatable-intro.pdf

这些例子继续说二进制搜索比矢量扫描更快,并产生完全相同的结果(参见第5页).所以这是我的例子:

library(data.table)
grpsize = ceiling(10000/26^2) 
DF <- data.frame(x=rep(LETTERS,each=26*grpsize), y=rep(letters,each=grpsize),v=runif(grpsize*26^2), stringsAsFactors=FALSE)
DT = data.table(DF)
setkey(DT,x,y)

DT[x=='R' & y=='h']
DT[J("R","h")]
Run Code Online (Sandbox Code Playgroud)

正如预期的那样,返回完全相同的结果.一个扫描每一行,另一个是二分搜索.但是,当存在不存在的行时,结果会有所不同.请参阅以下代码:

DT[x=='R' & y=='H']
DT[J("R","H")]
Run Code Online (Sandbox Code Playgroud)

我得到以下结果

# > DT[x=='R' & y=='H', ]
# Empty data.table (0 rows) of 3 cols: x,y,v

# > DT[J("R","H")]
#    x  y  v
# 1: R H NA
Run Code Online (Sandbox Code Playgroud)

a.)为什么会这样?

b.)是否有办法将二进制搜索的行为更改为不返回非现有行的结果?

r data.table

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

为一行更改一行中的data.table值

我正在尝试更改data.table中特定行的一列值.这在我进行矢量扫描时起作用,但在我进行二分查找时不起作用.

dtData <- data.table(TickerId = c(1,2,3,4,5), DateTime = c(1,2,3,4,5), Close =     c(100,200,300,400,500), key=c('TickerId', 'DateTime'))
dtQuery <- data.table(TickerId = c(1,4), DateTime = c(1,4))

#Binary search doesn't work - both changed rows now contain 101
dtData[dtQuery, Close:=c(101,401)]

#Vector scan works
dtData[TickerId %in% c(1,4) & DateTime %in% c(1,4), Close:=c(101,401)]
Run Code Online (Sandbox Code Playgroud)

有人能指出为什么会出现这种情况吗?

还有什么是在大型data.table中更改这样的值的最佳(最快)方法?

谢谢.

r data.table

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

时间序列的滚动总和与因子

我试图计算一个r在T日期范围内的回报时间序列的滚动总和.但是,在我计算滚动总和的每个日期时,我想要计算滚动总和w中每个数字的权重.

该公式适用于每个日期t:

[Sum from i=1 to m](w(i)*r(t-i-1))
Run Code Online (Sandbox Code Playgroud)

让我们看一个非常简单的例子.我有一个T = 6返回的返回系列r.对于每个日期,t我想计算过去两个日期(m = 2)的滚动总和.我还想把第一次观察的重量增加到第二次.

r <- c(100,110,100,110,100,110)                 
w <- c(1,0.5)
Run Code Online (Sandbox Code Playgroud)

我知道我可以使用过滤功能轻松完成滚动总和:

filter(r, rep(1, 2))
Run Code Online (Sandbox Code Playgroud)

但是我无法将权重因子包含在滚动总和中.以下行给出了错误的结果c(155, 155, 155, 155, 155, NA)

filter(r*w, rep(1, 2))
Run Code Online (Sandbox Code Playgroud)

在哪里我真的想得到结果 c(155, 160, 155, 160, 155, NA)

任何帮助表示赞赏.

r time-series filter

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

将时区添加到 data.table 中的 POSIXct 对象

我有一个 data.table 对象,其中日期和时间列存储为 IDate/ITime 对象。我还有一个时区列,其中时区以字符形式给出。

现在我想创建一个使用 POSIXct 格式的 DateTime 列。但是我不知道如何向对象添加正确的时区。

#Create the data.table object
dtData <- data.table(
Index = seq(1,5), 
Time= as.ITime(c('16:00', '16:00', '12:30', '16:00', '15:00')),
Date = as.IDate(rep('2015-05-28', 5)),
TimeZone=c('America/New_York', 'America/New_York', 'Europe/London', 'Asia/Hong_Kong', 'Japan'))

#This gives an error of invalid tz value
dtData[, psxDateTime:=as.POSIXct(Date, time = Time, tz = TimeZone)]

#This seem to set every row to Japan time zone
dtData[, psxDateTime:=as.POSIXct(Date, time = Time, tz = TimeZone), by=Index]
print(dtData$psxDateTime)
Run Code Online (Sandbox Code Playgroud)

有人能指出我正确的方向吗?谢谢。

编辑:

阅读 David Arenburg 和 akrun 的评论后,似乎无法在一个 data.table …

r posixct data.table

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

R如何直接调用'[.class < - '

出于好奇,我如何直接调用R中的'[.class'函数?

我知道我能做到:

test <- c(2,4,6)
test[2]
Run Code Online (Sandbox Code Playgroud)

但是可以直接指定类吗?如果是这样,怎么样?

'[.numeric<-'(test , 2)
'[.numeric'(test , 2)
Run Code Online (Sandbox Code Playgroud)

我试过这些,但他们回来了

Error: could not find function "[.numeric"
Run Code Online (Sandbox Code Playgroud)

r

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

标签 统计

r ×7

data.table ×4

filter ×1

posixct ×1

time-series ×1