我有以下data.frame,称为tableMS:
X Y Z T
1 375 855 455.7259 3777.856
2 395 969 347.8306 2506.7
3 449 811 309.9512 519.8513
4 451 774 278.291 717.8705
5 453 774 278.291 717.8705
6 455 774 278.291 717.8705
7 521 697 376.734 693.8541
8 529 855 455.7259 3777.856
9 531 855 455.7259 3777.856
10 609 774 278.291 717.8705
Run Code Online (Sandbox Code Playgroud)
当我尝试使用函数melt()时
MeltTable <- melt(tableMS,id=c("X","Y"))
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
Error in match.names(clabs, names(xi)) :
names do not match previous names
Run Code Online (Sandbox Code Playgroud)
我很难理解会发生什么,任何想法?
编辑:我生成了tableMS作为更大表的一部分,str(tableMS)的输出是:
'data.frame': 10 obs. of 4 variables:
$ …
Run Code Online (Sandbox Code Playgroud) 我正在尝试向包含C++代码的CRAN提交一个包(我对c ++没有任何线索,cpp文件是由其他人编写的).
R检查抱怨'std :: cout'(C++)编译代码不应该调用可能终止R的入口点,也不应该写入stdout/stderr而不是写入控制台,也不应该写入C RNG
我在代码中找到了以下命令:
integrate_const(stepper_type( default_error_checker< double >( abs_error , rel_error ) ),
mDifEqn,
x,
0.0,
(precipitationLength * timeStep),
timeStep,
streaming_observer(std::cout) );
Run Code Online (Sandbox Code Playgroud)
我猜R(CRAN)期待别的东西而不是std :: cout ...但是什么?
我有以下功能包含一些颂歌:
myfunction <- function(t, state, parameters) {
with(as.list(c(state, parameters)),{
if (X>20) { # this is an internal threshold!
Y <- 35000
dY <- 0
}else{
dY <- b * (Y-Z)
}
dX <- a*X^6 + Y*Z
dZ <- -X*Y + c*Y - Z
# return the rate of change
list(c(dX, dY, dZ),Y,dY)
})
}
Run Code Online (Sandbox Code Playgroud)
以下是一些结果:
library(deSolve)
parameters <- c(a = -8/3, b = -10, c = 28)
state <- c(X = 1, Y = 1, Z = 1)
times <- …
Run Code Online (Sandbox Code Playgroud) 我有一个时间序列x:
dput(x)
structure(c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28.8, 0, 0,
0, 0, 0, 0, 0, 0), index = structure(c(1193524740, 1193525340,
1193525940, 1193526540, 1193527140, 1193527740, 1193528340, 1193528940,
1193529540, 1193530140, 1193530740, 1193531340, 1193531940, 1193532540,
1193533140, 1193533740, 1193534340, 1193534940, 1193535540, 1193536140,
1193536740, 1193537340), class = c("POSIXct", "POSIXt")), class = "zoo")
Run Code Online (Sandbox Code Playgroud)
我聚合到1小时
as.xts(aggregate(x, align.time(index(x), 60*60)))
[,1]
2007-10-28 00:00:00 0.0
2007-10-28 01:00:00 0.0
2007-10-28 01:00:00 28.8
2007-10-28 02:00:00 0.0
2007-10-28 03:00:00 0.0
Run Code Online (Sandbox Code Playgroud)
如你所见,我得到"2007-10-28 01:00:00"重复.
我想知道这是一个错误还是我做错了什么?
我有大约 300 个文件,每个文件包含 1000 个时间序列实现(每个文件约 76 MB)。
我想计算全套 300000 个实现中每个时间步的分位数 (0.05、0.50、0.95)。
我无法将 1 个文件中的实现合并在一起,因为它会变得太大。
做到这一点最有效的方法是什么?
每个矩阵都是通过运行模型生成的,但是这里是包含随机数的样本:
x <- matrix(rexp(10000000, rate=.1), nrow=1000)
Run Code Online (Sandbox Code Playgroud) r ×5
aggregate ×1
c++ ×1
large-data ×1
melt ×1
ode ×1
quantile ×1
threshold ×1
time-series ×1
xts ×1