我有一个遵循这种形式的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/进行了搜索,但没有找到任何内容。
答案 0 :(得分: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(...))
而不是从头开始编写全新的函数。