我注意到了这个意外的功能:
foo <- list(whatever=1:10)
Run Code Online (Sandbox Code Playgroud)
现在,以下工作原理:
foo$wha
foo$w
foo$whateve
Run Code Online (Sandbox Code Playgroud)
但是,以下内容不是:
foo[["wha"]]
Run Code Online (Sandbox Code Playgroud)
这会产生意想不到的后果(对我而言是意料之外的),如果您有两个潜在的名称,例如" CXCL1 "和" CXCL11 ",并且您想通过检查知道CXCL1是否为空!is.null(foo$CXCL1),则即使CXCL1也会返回TRUE null,但CXCL11不是.
我的问题是:
foo$whatever和之间有什么区别foo[["whatever"]]?我有一个R代码,可以进行两个函数的卷积...
convolveSlow <- function(x, y) {
nx <- length(x); ny <- length(y)
xy <- numeric(nx + ny - 1)
for(i in seq(length = nx)) {
xi <- x[[i]]
for(j in seq(length = ny)) {
ij <- i+j-1
xy[[ij]] <- xy[[ij]] + xi * y[[j]]
}
}
xy
}
Run Code Online (Sandbox Code Playgroud)
有没有办法删除两个for循环并使代码运行得更快?
谢谢你
我有几个数据文件,如下所示:
X code year month day pp
1 4515 1953 6 1 0
2 4515 1953 6 2 0
3 4515 1953 6 3 0
4 4515 1953 6 4 0
5 4515 1953 6 5 3.5
Run Code Online (Sandbox Code Playgroud)
有时会丢失数据,但我没有NA,行根本就不存在.我需要在数据丢失时创建NA.我虽然可以通过将其转换为动物园对象来确定何时发生,并检查严格的规律性(我之前从未使用过动物园),但我使用以下代码:
z.date<-paste(CET$year, CET$month, CET$day, sep="/")
z <- read.zoo(CET, order.by= z.date )
reg<-is.regular(z, strict = TRUE)
Run Code Online (Sandbox Code Playgroud)
但答案总是如此!
谁能告诉我为什么不工作?或者甚至更好,告诉我一种在数据丢失时创建NA的方法(有或没有动物园包)?
谢谢
我希望能够source()在同一目录中包含不同文件的文件,但我不想在运行此文件之前从R-prompt设置工作目录:
> getwd()
[1] "/Users/myser"
> source("/Users/myuser/workspace/myproject/myfile.r")
Run Code Online (Sandbox Code Playgroud)
在/ Users/myuser/workspace/myproject里面,会有myfile.r和my-utils.r.myfile.r source('my-utils.r')从中调用.
其他编程语言可以确定当前文件的路径.R有类似的东西吗?例:
cur_dir <- sys.get_current_file_path()
source(file.path(cur_dir, "my-utils.r"))
Run Code Online (Sandbox Code Playgroud) 我有一个xts对象,第一列是日期时间,然后是OHLC.当我输入
>test
Run Code Online (Sandbox Code Playgroud)
它打印正确的输出如下:
2010-09-08 15:13:00 115 115 110 115
2010-09-08 15:14:00 120 125 115 125
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试write.csv(test,"test.csv")时,它只写OHLC - 为什么.我用什么命令来写日期时间
这就是str(test)的样子:
An ‘xts’ object from 2010-06-30 15:47:00 to 2010-09-08 15:14:00 containing:
Data: num [1:21757, 1:4] 215 220 205 195 185 ...
- attr(*, "dimnames")=List of 2
..$ : NULL
..$ : chr [1:4] "y.Open" "y.High" "y.Low" "y.Close"
Indexed by objects of class: [POSIXlt,POSIXt] TZ:
xts Attributes:
NULL
Run Code Online (Sandbox Code Playgroud) 使用quantmod并从Yahoo收集数据.我正在尝试获取rownames中的日期.但是我只是得到NULL.
library("quantmod")
sp500 <- new.env()
getSymbols("^GSPC", env = sp500, src = "yahoo",
from = as.Date("2008-01-04"), to = Sys.Date())
GSPC <- get("GSPC", envir = sp500)
date1 <- rownames(GSPC)
date1
> NULL
Run Code Online (Sandbox Code Playgroud)
我很感激你帮助将rowname日期变成矢量.
我有10000多行的动物园对象.
> head(tt)
A B
2007-01-04 0.005945924 0.0021167475
2007-01-05 -0.004201991 -0.0080020024
2007-01-08 0.001740897 0.0045804104
2007-01-09 0.000000000 -0.0008163931
2007-01-10 -0.004503531 0.0032615812
2007-01-11 -0.005841138 0.0043863282
Run Code Online (Sandbox Code Playgroud)
我尝试了以下行的变体,但无济于事.
rollapply(tt, 21, function(x) cor(x[,1],x[,2]))
Run Code Online (Sandbox Code Playgroud)
每个条目都给出1的相关性,看起来它正在从相关矩阵的对角线上取下1.
2013-11-25 1 1
2013-11-26 1 1
2013-11-27 1 1
2013-11-29 1 1
2013-12-02 1 1
2013-12-03 1 1
Run Code Online (Sandbox Code Playgroud)
我真正想要的是-0.4649,如下所示
> cor(tt)
A B
A 1.0000000 -0.4649881
B -0.4649881 1.0000000
Run Code Online (Sandbox Code Playgroud) 我是stackoverflow的新手,对R来说相当新,但搜索时间很长,很难找到以下问题的答案.
我有许多数据文件是温度与时间序列.我将CSV导入为ZOO对象,然后转换为XTS.正确的文件看起来像这样,有小时和半小时的读数:
>head(master1)
S_1
2010-03-03 00:00:00 2.8520
2010-03-03 00:30:00 2.6945
2010-03-03 01:00:00 2.5685
2010-03-03 01:30:00 2.3800
2010-03-03 02:00:00 2.2225
2010-03-03 02:30:00 2.0650
Run Code Online (Sandbox Code Playgroud)
但有些人的时间价值略有偏差 - 即23:59:00而不是00:00:00,或00:29:00而不是00:30:00.
>head(master21)
S_21
2010-03-04 23:59:00 -0.593
2010-03-05 00:29:00 -0.908
2010-03-05 00:59:00 -1.034
2010-03-05 01:29:00 -1.223
2010-03-05 01:59:00 -1.349
2010-03-05 02:29:00 -1.538
Run Code Online (Sandbox Code Playgroud)
我想纠正这些时间序列,因为微小差异对我的分析并不重要,我最终想要合并文件,因此每个时间序列需要具有相同的时间.
I want a command that can just say "shift the time series forward by 1 minute, but don't alter the data column (e.g. S_21).
I have had some luck with gsub() on easier changes, …
如果我在解释这个问题时得到任何错误的术语,那么我对R很新,所以道歉.
我在csv文件中有一组每日返回数据,我已设法将其转换为xts对象.数据格式如下:
HighYield..EUR. MSCI.World..EUR.
2002-01-31 0.0144 0.0031
2002-02-01 0.0056 -0.0132
2002-02-02 0.0373 0.0356
2002-02-03 -0.0167 -0.0644
2002-02-04 -0.0062 -0.0332
2002-02-05 -0.0874 -0.1112
...
Run Code Online (Sandbox Code Playgroud)
我想创建一个脚本,它将找到该月的第一个工作日(从索引中的值范围),然后创建一个新的xts对象,其中包含这些返回值.
例如,在脚本运行后,我将使用以下格式的xts对象:
HighYield..EUR. MSCI.World..EUR.
2002-01-31 0.0144 0.0031
2002-02-28 0.0011 -0.0112
2002-03-31 0.0222 0.0224
2002-04-30 -0.0333 -0.0223
2002-05-30 -0.0011 -0.0012
2002-06-30 -0.0888 -0.0967
...
Run Code Online (Sandbox Code Playgroud)
有谁可以帮助我吗?并且如果可能的话,解释脚本的每个部分正在做什么.
> library(PerformanceAnalytics)
> data(managers)
> class(managers)
[1] "xts" "zoo"
> head(managers)
HAM1 HAM2 HAM3 HAM4 HAM5 HAM6 EDHEC LS EQ SP500 TR US 10Y TR US 3m TR
1996-01-31 0.0074 NA 0.0349 0.0222 NA NA NA 0.0340 0.00380 0.00456
1996-02-29 0.0193 NA 0.0351 0.0195 NA NA NA 0.0093 -0.03532 0.00398
1996-03-31 0.0155 NA 0.0258 -0.0098 NA NA NA 0.0096 -0.01057 0.00371
1996-04-30 -0.0091 NA 0.0449 0.0236 NA NA NA 0.0147 -0.01739 0.00428
1996-05-31 0.0076 NA 0.0353 0.0028 NA NA NA …Run Code Online (Sandbox Code Playgroud) r ×10
xts ×5
zoo ×3
time-series ×2
filesystems ×1
list ×1
loops ×1
missing-data ×1
quantmod ×1
syntax ×1
system ×1