0

我有一个遵循这种形式的 R 函数:

CreateXtsFromFile <- function(file)
{
    data <- read.table(file, sep = ",")
    data <- xts(data[, 1], order.by = data[, 1], unique = FALSE)
    # Manipulate the data
    colnames(data) <- c("a", "b", "c")
}

然而,调用这个函数会返回一个字符[3]:

data <- CreateXtsFromFile("file.txt")
str(test)
 chr [1:2] "a" "b"

但是,在删除函数中的最后一行后,相同的调用会返回一个 xts。奇怪的是,将最后一行移动到函数中的任何其他行也会返回一个 xts。有没有人遇到过这个?我在https://bugs.r-project.org/bugzilla3/上进行了搜索,但没有找到任何东西。

4

1 回答 1

3

这不是错误。 help("function")告诉你发生了什么。它说,“如果在没有调用 return 的情况下到达函数的末尾,则返回最后一个计算表达式的值。”

所以你需要返回data对象:

CreateXtsFromFile <- function(file)
{
    data <- read.table(file, sep = ",")
    data <- xts(data[, 1], order.by = data[, 1], unique = FALSE)
    # Manipulate the data
    colnames(data) <- c("a", "b", "c")
    return(data)
}

此外,您可以使用as.xts(read.zoo(...))而不是从头开始编写一个全新的函数。

于 2013-05-08T21:14:59.087 回答