Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用formal用点修改S3泛型_R - Fatal编程技术网

使用formal用点修改S3泛型

使用formal用点修改S3泛型,r,R,为了更好地理解R语言,我尝试修改基本函数,如mean(),sd(),sum(),以默认使用参数na.rm=TRUE 我认为执行该操作的一种方法是使用formals()函数 我试过: m <- mean formals(m) <- alist(x = , na.rm = TRUE, ... = ) m(c(12, 16, NA)) m有一些mean因此,例如,如果您想覆盖数值的mean (这是唯一的想法——也许还有别的办法) 1) 找到所需的平均数 > methods(mean

为了更好地理解R语言,我尝试修改基本函数,如
mean()
sd()
sum()
,以默认使用参数
na.rm=TRUE

我认为执行该操作的一种方法是使用formals()函数

我试过:

m <- mean
formals(m) <- alist(x = , na.rm = TRUE, ... = )
m(c(12, 16, NA))

m有一些
mean
因此,例如,如果您想覆盖
数值的
mean
(这是唯一的想法——也许还有别的办法)

1) 找到所需的平均数

> methods(mean)
[1] mean.Date     mean.default  mean.difftime mean.IDate*   mean.POSIXct  mean.POSIXlt  mean.times*  
see '?methods' for accessing help and source code
2) 覆盖

m=mean.default
formals(m) <- alist(x = , trim=0,na.rm = TRUE, ... = )
或者更好的方法是再创建一个mean(使用新类),如

mean.myclass=mean.default

formals(mean.myclass)难道不可能将参数传递给泛型函数吗?我不知道,可能是有人有更好的想法并将其作为答案发布
m=mean.default
formals(m) <- alist(x = , trim=0,na.rm = TRUE, ... = )
> x=c(12, 16, NA)
> m(x)
[1] 14
mean.myclass=mean.default
formals(mean.myclass) <- alist(x = , trim=0,na.rm = TRUE, ... = )

x=c(12, 16, NA)
class(x) <- append("myclass",class(x))
mean(x)
y=c(12, 16, NA)
mean(y)