我是R的新生,只有在使用我编写的函数时,我才难以使用aggregate((;它适用于mean、min等。我假设问题出在我的函数"myfun"的结构中。但"myfun"与我的数据集配合得很好。有什么关于如何解决这个问题的建议吗?
下面的代码包括我创建的"myfun"功能:
编写功能
'myfun <- function(f){
min <- min(f)
max <- max(f)
mean <- mean(f)
range <- max(f) - min(f)
lst <- list(min = min, max = max, mean = mean, range = range)
return(lst)
}'
'myfun(NoNAs$Infection) # apply function to print min, max, mean, & range of Infection'
问题5:使用aggregate((计算每个物种的相应感染值。让自变量FUN是您在问题4中定义的函数。
'aggregate(NoNAs$Infection, by = list(NoNAs$Species), FUN = mean)
aggregate(NoNAs$Infection, by = list(NoNAs$Species), FUN = myfun)'
下面是NoNA数据集结构的一个片段,其中我已经删除了所有包含NA的行
在此处输入图像描述
谢谢你的帮助!
将您的函数更改为:
myfun <- function(f){
min <- min(f)
max <- max(f)
mean <- mean(f)
range <- max(f) - min(f)
lst <- c(min = min, max = max, mean = mean, range = range)
return(lst)
}
由于您没有提供可复制的数据,我们可以使用iris
:
data(iris)
aggregate(Sepal.Width~Species, iris, myfun)
# Species Sepal.Width.min Sepal.Width.max Sepal.Width.mean Sepal.Width.range
# 1 setosa 2.300 4.400 3.428 2.100
# 2 versicolor 2.000 3.400 2.770 1.400
# 3 virginica 2.200 3.800 2.974 1.600