2

在 R 中:我有一个矩阵,其中一列分为 8 种类型:a、b、c、d、e、f、g、h。我需要使用其他列中的数据对每种类型进行不同的计算。我想使用 switch() 函数来自动循环遍历每种类型并说明每种类型的差异计算;但是,我在网上看到的所有内容都只显示了每个开关的单线开关计算的语法示例。

这是一个使用 switch() 帮助中提供的代码的示例。我知道 mean() 是一个函数,但是对于这个例子来说,它不是一个函数,因为我只是想说明我不知道语法(并且在我的在线研究中没有明确说明) :

centre <- function(x, type) {
  switch(type,
     mean = {
           total.sum<-sum(type)
           mean = total.sum/length(type)
     },
     median = median(x),
     trimmed = mean(x, trim = .1))
}
4

1 回答 1

8

我认为沟通不畅来自您示例中的错字:

 mean = {
       total.sum<-sum(type)
       mean = total.sum/length(type)
 },

应该

 mean = {
       total.sum<-sum(x)
       mean = total.sum/length(x)
 },

如果您进行此更改,它的行为将完全符合您的预期。

ETA:我不确定您的评论中有什么问题。请尝试以下代码:

set.seed(1)

centre <- function(x, type) {
  switch(type,
     mean = {
           total.sum<-sum(x)
           mean = total.sum/length(x)
     },
     median = median(x),
     trimmed = mean(x, trim = .1))
}

x <- rcauchy(10)
print(centre(x, "mean"))
print(centre(x, "median"))
print(centre(x, "trimmed"))

输出是:

[1] -0.4844658
[1] -0.236111
[1] -0.3632328
于 2012-06-27T01:21:05.520 回答