如何在 R 中创建类似 python 的函数?
How to create similar python function in R?
我是 R 的新手,正在尝试学习如何制作一个简单的函数。
谁能告诉我如何在 R 中复制相同的 python 加法函数?
def add(self,x,y):
number_types = (int, long, float, complex)
if isinstance(x, number_types) and isinstance(y, number_types):
return x+y
else:
raise ValueError
您可以在 R 中使用面向对象的编程,但 R 主要是一种函数式编程语言。等效函数如下。
add <- function(x, y) {
stopifnot(is.numeric(x) | is.complex(x))
stopifnot(is.numeric(y) | is.complex(y))
x+y
}
注意:使用 +
已经可以满足您的要求。
考虑制作更接近您在 Python 中所做的东西:
add <- function(x,y){
number_types <- c('integer', 'numeric', 'complex')
if(class(x) %in% number_types && class(y) %in% number_types){
z <- x+y
z
} else stop('Either "x" or "y" is not a numeric value.')
}
在行动:
> add(3,7)
[1] 10
> add(5,10+5i)
[1] 15+5i
> add(3L,4)
[1] 7
> add('a',10)
Error in add("a", 10) : Either "x" or "y" is not a numeric value.
> add(10,'a')
Error in add(10, "a") : Either "x" or "y" is not a numeric value.
请注意,在 R 中我们只有 integer
、numeric
和 complex
作为基本数值数据类型。
最后,不知道错误处理是不是你想要的,希望对你有帮助。
我是 R 的新手,正在尝试学习如何制作一个简单的函数。 谁能告诉我如何在 R 中复制相同的 python 加法函数?
def add(self,x,y):
number_types = (int, long, float, complex)
if isinstance(x, number_types) and isinstance(y, number_types):
return x+y
else:
raise ValueError
您可以在 R 中使用面向对象的编程,但 R 主要是一种函数式编程语言。等效函数如下。
add <- function(x, y) {
stopifnot(is.numeric(x) | is.complex(x))
stopifnot(is.numeric(y) | is.complex(y))
x+y
}
注意:使用 +
已经可以满足您的要求。
考虑制作更接近您在 Python 中所做的东西:
add <- function(x,y){
number_types <- c('integer', 'numeric', 'complex')
if(class(x) %in% number_types && class(y) %in% number_types){
z <- x+y
z
} else stop('Either "x" or "y" is not a numeric value.')
}
在行动:
> add(3,7)
[1] 10
> add(5,10+5i)
[1] 15+5i
> add(3L,4)
[1] 7
> add('a',10)
Error in add("a", 10) : Either "x" or "y" is not a numeric value.
> add(10,'a')
Error in add(10, "a") : Either "x" or "y" is not a numeric value.
请注意,在 R 中我们只有 integer
、numeric
和 complex
作为基本数值数据类型。
最后,不知道错误处理是不是你想要的,希望对你有帮助。