Tôi đã tự hỏi liệu có cách nào buộc một hàm chỉ chấp nhận một số kiểu dữ liệu nhất định mà không phải kiểm tra nó trong hàm; hoặc, điều này là không thể bởi vì việc kiểm tra kiểu R được thực hiện khi chạy (trái ngược với các ngôn ngữ lập trình đó, chẳng hạn như Java, nơi kiểm tra kiểu được thực hiện trong quá trình biên dịch)?Bắt buộc các kiểu dữ liệu cụ thể làm đối số cho hàm
Ví dụ, trong Java, bạn phải chỉ định một kiểu dữ liệu:
class t2 {
public int addone (int n) {
return n+1;
}
}
Trong R, một chức năng tương tự có thể
addone <- function(n)
{
return(n+1)
}
nhưng nếu một vector được cung cấp, một vector sẽ (hiển nhiên) được trả lại. Nếu bạn chỉ muốn có một số nguyên duy nhất để được chấp nhận, sau đó là cách duy nhất để làm gì để có một điều kiện bên trong hàm, dọc theo dòng của
addone <- function(n)
{
if(is.vector(n) && length(n)==1)
{
return(n+1)
} else
{
return ("You must enter a single integer")
}
}
Cảm ơn,
Chris
Là điểm kiểu mã, trong trường hợp bạn không có số vô hướng, có thể bạn muốn ném một lỗi (với 'stop' hoặc' stopifnot') hoặc đưa ra cảnh báo (với 'warning') thay vì hơn là chỉ trả về một chuỗi. –