使用formal用点修改S3泛型
为了更好地理解R语言,我尝试修改基本函数,如使用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
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)