【发布时间】:2013-08-27 21:04:25
【问题描述】:
我有一个遵循这种形式的 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/ 上进行了搜索,但没有找到任何东西。
【问题讨论】:
-
不是错误。阅读
help("function"),它说:“如果在没有调用‘return’的情况下到达函数的末尾,则返回最后一个计算表达式的值。”此外,您可以使用as.xts(read.zoo(...)),而不是从头开始编写一个全新的函数。 -
谢谢,我会养成在函数结束时显式调用 return 的习惯
-
您不必在每个函数结束时显式调用
return,但您必须确保函数中最后一个求值的表达式是你想退货。例如。这将返回x:f <- function(x) { names(x) <- NULL; x }。