gpt4 book ai didi

r - 在 R/Splus 中编写函数来处理多种数据类型?

转载 作者:行者123 更新时间:2023-12-02 06:23:18 24 4
gpt4 key购买 nike

我想编写一个处理多种数据类型的函数。下面是一个有效但看起来笨拙的示例。是否有标准(或更好)的方法来执行此操作?

(这是我想念 Matlab 的时代,那里一切都是一种类型:>)

myfunc = function(x) {
# does some stuff to x and returns a value
# at some point the function will need to find out the number of elements
# at some point the function will need to access an element of x.
#
# args:
# x: a column of data taking on many possible types
# e.g., vector, matrix, data.frame, timeSeries, list
x.vec <- as.vector(as.matrix(as.data.frame(x)))
n <- length(x.vec)
ret <- x.vec[n/3] # this line only for concreteness
return(ret)
}

最佳答案

使用 S3 方法。一个帮助您入门的简单示例:

myfunc <- function(x) {
UseMethod("myfunc",x)
}
myfunc.data.frame <- function(x) {
x.vec <- as.vector(as.matrix(x))
myfunc(x.vec)
}
myfunc.numeric <- function(x) {
n <- length(x)
ret <- x[n/3]
return(ret)
}
myfunc.default <- function(x) {
stop("myfunc not defined for class",class(x),"\n")
}

两个注意事项:

  1. ...语法将任何附加参数传递给函数。如果您要扩展现有的 S3 方法(例如编写类似 summary.myobject 的内容),则包括 ...是个好主意,因为您可以传递给规范函数的参数。

print.myclass <- function(x,...) {
print(x$keyData,...)
}

  1. 您可以从其他函数调用函数,并保持良好和简洁。

关于r - 在 R/Splus 中编写函数来处理多种数据类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5506788/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com