首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >R:多行switch语句

R:多行switch语句
EN

Stack Overflow用户
提问于 2012-06-26 14:27:14
回答 1查看 5.7K关注 0票数 2

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

下面是一个使用switch()帮助中提供的代码的示例。我知道mean()是一个函数,但就本例而言,它不是一个函数,因为我只是想说明我不知道它的语法(在我的在线研究中没有明确说明):

代码语言:javascript
运行
复制
centre <- function(x, type) {
  switch(type,
     mean = {
           total.sum<-sum(type)
           mean = total.sum/length(type)
     },
     median = median(x),
     trimmed = mean(x, trim = .1))
}
EN

Stack Overflow用户

回答已采纳

发布于 2012-06-27 09:21:06

我认为错误的沟通来自于你例子中的一个打字错误:

代码语言:javascript
运行
复制
 mean = {
       total.sum<-sum(type)
       mean = total.sum/length(type)
 },

应该是

代码语言:javascript
运行
复制
 mean = {
       total.sum<-sum(x)
       mean = total.sum/length(x)
 },

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

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

代码语言:javascript
运行
复制
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"))

输出为:

代码语言:javascript
运行
复制
[1] -0.4844658
[1] -0.236111
[1] -0.3632328
票数 8
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11201790

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档