- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这个问题是关于包 GRATIS 中的 generate_msts() 函数。
我添加了一些新内容(使函数可以选择将其输出转换为可爱的 tsibble 格式或保留原始“列表”格式)并准备更新到 CRAN。
新代码添加如下(代码的详细信息以及问题底部显示的示例)
我想知道我应该得到 tsibble 索引吗?但是生成的数据好像没有索引?
output <- if (output_format == "list") {
res #this is output name defined before
} else if (output_format == "tsibble") {
as_tsibble(res)
}
return(output)
}
作为指导,我在
中更新了此函数的相应示例小插图 .然后事情变得连贯起来。
my_function(seasonal.periods = c(7, 365), n = 800, nComp = 2,output_format="tsibble")
Error in Fun(X[[i]],...): 'list' object cannot be coerced to type 'integer' Calls: <Anonymous>...
as.data.frame -> head -> head.data.frame -> lappy -> FUN Execution halted.
但是,这很好用。它可以编织小插图并显示tsibble的头部。
x <- my_function(seasonal.periods = c(7, 365), n = 800, nComp = 2,output_format="tsibble")
head(x)
不过这样每次用前都要保存,很不方便。我想知道这是因为我在包中使用了任何默认设置还是小插图没有改变?或者在更改 R 包中的函数后我需要做一些额外的步骤?或者甚至我添加的if else内容需要改进?
devtools::document("C:/Users/mreal/Documents/GitHub/package_name");devtools::install("C:/Users/mreal/Documents/GitHub/package_name")
更新重建功能。但这仍然无助于小插图。
rm(list=ls())
在
console
.它也不起作用
---
title: "Introduction to gratis"
author: "Bocong Zhao"
output: rmarkdown::html_vignette
vignette: >
%\VignetteIndexEntry{Introduction to gratis}
%\VignetteEngine{knitr::rmarkdown}
%\VignetteEncoding{UTF-8}
---
{r initial, echo = FALSE, cache = FALSE, results = 'hide'}
library(knitr)
opts_chunk$set(
warning = FALSE, message = FALSE, echo = TRUE,
fig.width = 7, fig.height = 6, fig.align = 'centre',
comment = "#>"
)
original <- options("tibble.print_min")
options(tibble.print_min = 5)
# <---- Do stuff with changed option, e.g. print some tibbles ---->
options(tibble.print_min = original)
{r, message=FALSE, include = FALSE}
library(forecast)
library(tsibble)
{r setup}
# load package
library(gratis)
## Generate mutiple seasonal time series
Time series can exhibit multiple seasonal pattern of different length, especially when series observed at a high frequency such as daily or hourly data.
We use function **generate_msts()** to generate mutiple seasonal time series.
**Definitions**
Here are the definitions of parameter settings in function generate_msts():
|parameter settings | Definition|
|:----|:-----|
|seasonal.periods | a vector of seasonal periods of the time series to be generated|
|nComp|number of mixing components when simulating time series using MAR models|
|n |length of the generated time series|
**Example**
Suppose we want to use MAR model to generate a time series with **2** mixing components and the length **800** from random parameter spaces. Particularly, this time series has two seasonal periods **7** and **365**.
{r fig.height = 6, fig.width = 7}
# Generate mutiple seasonal time series with 'tsibble' output format
x <- generate_msts(seasonal.periods = c(7, 365), n = 800, nComp = 2,output_format="tsibble")
head(x)
**Plot time series**
{r fig.height = 6, fig.width = 7}
# Generate mutiple seasonal time series with 'list' output format
x <- generate_msts(seasonal.periods = c(7, 365), n = 800, nComp = 2,output_format="list")
autoplot(x)
(生成的.R文件)包内使用的R代码如下
#' Generate mutiple seasonal time series from random parameter spaces of the mixture autoregressive (MAR) models.
#'
#' Generate mutiple seasonal time series from random parameter spaces of the mixture autoregressive (MAR) models.
#' @param seasonal.periods a vector of seasonal periods of the time series to be generated.
#' @param n length of the generated time series.
#' @param nComp number of mixing components when simulating time series using MAR models.
#' @param output_format An optional argument which allows to choose output format between "list" and "tsibble"
#' @return a time series with multiple seasonal periods.
#' @export
#' @examples
#' x <- generate_msts(seasonal.periods = c(7, 365), n = 800, nComp = 2, output_format= "list")
#' forecast::autoplot(x)
generate_msts <- function(seasonal.periods = c(7, 365), n = 800, nComp = NULL,output_format="list") {
x.list <- map(seasonal.periods, function(p) {
generate_ts(n.ts = 1, freq = p, n = n, nComp = nComp)$N1$x
})
names(x.list) <- paste0("Season", seasonal.periods)
x.list[1:(length(x.list) - 1)] <- lapply(x.list[1:(length(x.list) - 1)], function(x) {
x - trendcycle(stl(x, "per"))
})
weights <- msts_weights(length(seasonal.periods))
res <- as_tibble(scale(x.list %>% bind_cols())[, ]) %>%
mapply("*", ., weights) %>%
as_tibble() %>%
mutate(x = rowSums(.)) %>%
select(x) %>%
msts(seasonal.periods = seasonal.periods)
# New content
output <- if (output_format == "list") {
res
} else if (output_format == "tsibble") {
as_tsibble(res)
}
return(output)
}
# ===========================================================================
# Simulated weights for the simulation of msts
# ===========================================================================
msts_weights <- function(n.periods) {
gamma <- runif(n.periods, 0)
weights <- gamma / sum(gamma)
return(weights)
}
最佳答案
我试图为你运行这个 - 我的第一个猜测是 NAMESPACE 问题。不过好像也跟generate_msts()
有关功能。
我真的不认为这与首先将其保存到变量 x
无关。 .
以下是我的发现:
不起作用:
x <- generate_msts(seasonal.periods = c(7, 365), n = 800, nComp = 2,output_format="tsibble")
x
不起作用:
print(generate_msts(seasonal.periods = c(7, 365), n = 800, nComp = 2,output_format="tsibble"))
不起作用:
x <- generate_msts(seasonal.periods = c(7, 365), n = 800, nComp = 2,output_format="tsibble")
print(x)
作品:
head(generate_msts(seasonal.periods = c(7, 365), n = 800, nComp = 2,output_format="tsibble"))
在失败的情况下,它总是与您相同的错误消息:
Error: processing vignette 'QuickStart.Rmd' failed with diagnostics:'list' object cannot be coerced to type 'integer'
head()
,
str()
,
class()
一直为我和
工作只有print()
没有用 ,我假设是打印功能有问题。所以你的解决方法是将它保存到变量
x
只能正常工作,因为您没有调用打印功能。
Rmarkdown
中使用 generate_msts() 时才会出现问题 .正如我稍后解释的,这似乎是合理的,因为在 knitr 中打印与在控制台上打印不同。
generate_msts()
并重建包:
output <- if (output_format == "list") {
res
} else if (output_format == "tsibble") {
tsibble(date = as.Date("2017-01-01") + 0:9,value = rnorm(10))
}
Rmarkdown 突然运行没有错误。
Before knitr v1.6, printing objects in R code chunks basically emulates the R console.
tsibble()
创建的 tsibble )。但只是一个(疯狂的?)猜测......总体上的错误和行为真的很奇怪......
1. ├─base::print(x)
2. └─tibble:::print.tbl(x)
3. ├─cli::cat_line(format(x, ..., n = n, width = width, n_extra = n_extra))
4. │ └─base::paste0(..., collapse = "\n")
5. ├─base::format(x, ..., n = n, width = width, n_extra = n_extra)
6. └─tsibble:::format.tbl_ts(x, ..., n = n, width = width, n_extra = n_extra)
7. ├─base::format(trunc_mat(x, n = n, width = width, n_extra = n_extra))
8. └─tibble::trunc_mat(x, n = n, width = width, n_extra = n_extra)
9. ├─base::as.data.frame(head(x, n))
10. ├─utils::head(x, n)
11. └─utils:::head.data.frame(x, n)
12. └─base::lapply(...)
13. └─utils:::FUN(X[[i]], ...)
对你来说应该是类似的,但如果你想自己得到这个,你必须在你的 rmarkdown 文档中执行以下命令
options(rlang_trace_top_env = rlang::current_env())
options(error = function() {
sink()
print(rlang::trace_back(bottom = sys.frame(-1)), simplify = "none")
})
但是正如你在调用堆栈中看到的,错误是由 base::print(x) 引起的,它调用了 S3 方法 tibble::print.tbl(x),然后该方法内部调用了 tsibble:::format.tbl_ts , 调用 tibble::trunc_mat, ... 并导致错误内部的某处。
original <- options("tibble.print_min")
options(tibble.print_min = 5)
# <---- Do stuff with changed option, e.g. print some tibbles ---->
options(tibble.print_min = original)
将其更改为:
options(tibble.print_min = 5)
那么应该工作。
关于r - 在 R 中,不能在包 Vignette 文件中编出相同的代码。 "list"对象不能被强制为整数类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63804705/
我想使用 R 预定义这样的列表 DATA<-list( list(list(),list(),list()), list(list(),list(),list()), list(list(),l
如何将一个列表添加到另一个列表,返回一个列表的列表? foo :: [a] -> [a] -> [[a]] 例如,我想要的结果是: foo [1,2] [3,4] 将是 [[1,2], [3,4]]。
我还没有在这里找到类似问题的解决方案,所以我会寻求你的帮助。 有 2 个列表,其中之一是列表列表: categories = ['APPLE', 'ORANGE', 'BANANA'] test_re
这个问题不同于Converting list of lists / nested lists to list of lists without nesting (这会产生一组非常具体的响应,但无法解决
原始列表转换为 List正好。为什么原始列表的列表不能转换为 List 的列表? { // works List raw = null; List wild = raw; } {
在下面的代码中,get()被调用并将其结果分配给类型为 List> 的变量. get()返回 List>并在类型参数为 T 的实例上调用设置为 ? ,所以它应该适合。 import java.util
原始列表转换为 List正好。为什么原始列表的列表不能转换为 List 的列表? { // works List raw = null; List wild = raw; } {
在insufficiently-polymorphic 作者说: def foo[A](fst: List[A], snd: List[A]): List[A] There are fewer way
我有下面的代码有效。 class ListManipulate(val list: List, val blockCount: Int) { val result: MutableList>
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 5 年前。 Improve this ques
在 scala (2.9) 中转换列表列表的最佳方法是什么? 我有一个 list : List[List[A]] 我想转换成 List[A] 如何递归地实现这一点?或者还有其他更好的办法吗? 最佳答案
我编写了这个函数来确定给定元素是否存储在元组列表的列表中,但目前它只搜索第一个列表。我将如何搜索其余列表? fun findItem (name : command, ((x,y)::firstlis
我创建了一个类名 objectA,它有 4 个变量:约会时间;字符串文本;变量 1,变量 2 我需要创建一个 ObjectA() 列表。然后首先按时间对它们进行分组,其次按 var1,然后按 var2
我有一套说法 char={'J','A'} 和列表的列表 content = [[1,'J', 2], [2, 'K', 3], [2, 'A', 3], [3,'A', 9], [5, 'J', 9
我有以下列表 List >>> titles = new ArrayList >>> ();我想访问它的元素,但我不知道该怎么做.. 该列表有 1 个元素,它又包含 3 个元素,这 3 个元素中的
转换 List[List[Long]] 的最佳方法是什么?到 List[List[Int]]在斯卡拉? 例如,给定以下类型列表 List[List[Long]] val l: List[List[Lo
我有一个来自 Filereader (String) 的 List-List,如何将其转换为 List-List (Double):我必须返回一个包含 line-Array 的第一个 Values 的
我收集了List> 。我需要将其转换为List> 。这是我尝试过的, List> dataOne = GetDataOne(); var dataTwo = dataOne.Select(x => x
这个问题在这里已经有了答案: Cannot convert from List to List> (3 个答案) 关闭 7 年前。 我没有得到这段代码以任何方式编译: List a = new Ar
这个问题在这里已经有了答案: Cannot convert from List to List> (3 个答案) 关闭 7 年前。 我没有得到这段代码以任何方式编译: List a = new Ar
我是一名优秀的程序员,十分优秀!