• 主页
  • 课程

    关于课程

    • 课程归档
    • 成为一名讲师
    • 讲师信息
    同等学历教学

    同等学历教学

    免费
    阅读更多
  • 特色
    • 展示
    • 关于我们
    • 问答
  • 事件
  • 个性化
  • 博客
  • 联系
  • 站点资源
    有任何问题吗?
    (00) 123 456 789
    weinfoadmin@weinformatics.cn
    注册登录
    恒诺新知
    • 主页
    • 课程

      关于课程

      • 课程归档
      • 成为一名讲师
      • 讲师信息
      同等学历教学

      同等学历教学

      免费
      阅读更多
    • 特色
      • 展示
      • 关于我们
      • 问答
    • 事件
    • 个性化
    • 博客
    • 联系
    • 站点资源

      R语言

      • 首页
      • 博客
      • R语言
      • 面试|R语言面试问题集2

      面试|R语言面试问题集2

      • 发布者 weinfoadmin
      • 分类 R语言
      • 日期 2019年5月10日
      测试开头

      编者按:【R语言面试问题集】是从网络上面收集和整理R的语言面试过程中基础的重要的问题集。通过这些问题的学习与解答,一来作为R语言知识掌握的检测,二来感受R语言在各方面的应用。您遇到什么R语言面试问题集?请给我留言。我创建了R语言微信群,定位是R语言学习与实践,需要入群的朋友,请添加我的微信:luqin360,备注:R语言入群。

      续接《R语言面试问题集1》, 本文汇总5个R语言面试问题。

      R语言面试问题集2

      16. 聚类是什么?kmeans聚类和层次聚类的区别是什么?

      Cluster是属于同一个类的一组对象。 聚类是将一组抽象对象转换为相似对象的类的过程。

      让我们看看为什么在数据分析中需要聚类:

      • 可伸缩性——我们需要高度可伸缩的聚类算法来处理大型数据库。

      • 能够处理不同类型的属性—算法应该能够应用于任何类型的数据,例如基于区间(数值)的数据、分类数据和二进制数据。

      • 发现具有属性形状的聚类 – 聚类算法应该能够检测任意形状的聚类。 它们不应仅限于那些倾向于找到小尺寸球形簇的距离测量。

      • 高维度 – 聚类算法不仅应该能够处理低维数据,还应该能够处理高维空间。

      • 处理嘈杂数据的能力 – 数据库包含嘈杂,缺失或错误的数据。 某些算法对此类数据敏感,可能导致质量较差的群集。

      • 可解释性 – 聚类结果应该是可解释的,可理解的和可用的。

      K-MEANS聚类:

      K均值聚类是众所周知的划分方法。 在该方法中,对象被分类为属于K组之一。 划分方法的结果是一组K个簇,每个数据集的对象属于一个簇。 在每个簇中,可能存在质心或簇代表。 在我们考虑实值数据的情况下,簇内所有对象的属性向量的算术平均值提供了适当的代表; 在其他情况下可能需要替代类型的质心。

      示例:文档聚类可以由聚类中某些最小数量的文档中出现的关键字列表表示。 如果聚类的数量很大,则可以进一步聚类质心以在数据集内生成层次结构。 K-means是一种数据挖掘算法,它执行数据样本的聚类。 为了聚类数据库,K-means算法使用迭代方法。

      R 代码

      # Determine number of clusters

      wss <- (nrow(mydata)-1)*sum(apply(mydata,2,var))
      for (i in 2:15) wss[i] <- sum(kmeans(mydata,
      centers=i)$withinss)
      plot(1:15, wss, type=”b”, xlab=”Number of Clusters”,
      ylab=”Within groups sum of squares”)
      # K-Means Cluster Analysis

      fit <- kmeans(mydata, 5) # 5 cluster solution
      # get cluster means

      aggregate(mydata,by=list(fit$cluster),FUN=mean)
      # append cluster assignment

      mydata <- data.frame(mydata, fit$cluster)

      可以使用pam()而不是kmeans()调用基于mediods的健壮版本的K-means。fpc包中的pamk()函数是pam的包装器,它还根据最佳平均轮廓宽度打印建议的集群数量。

      层次聚类:
      该方法对给定的数据对象集创建层次分解。我们可以根据层次分解的形成对层次方法进行分类。

      这里有两种方法:

      • 凝聚的方法

      • 分裂的方法

      凝聚的方法
      这种方法也称为自底向上方法。在这里,我们从每个对象为一个单独的组开始。它不断地合并彼此接近的对象或组。它一直这样做,直到所有组合并为一个组,或者直到终止条件成立为止。

      分裂的方法:
      这种方法也称为自顶向下方法。在这里,我们从同一个集群中的所有对象开始。在连续迭代中,一个集群被分割成更小的集群。直到一个集群中的每个对象或终止条件保持不变为止。这种方法是严厉的,即,一旦合并或拆分完成,就永远无法撤消。

      R代码

      Cars example

      # The mtcars data set is built into R:

      help(mtcars)
      # We will focus on the variables that are continuous in nature rather than discrete:

      cars.data <- mtcars[,c(1,3,4,5,6,7)]
      # Standardizing by dividing through by the sample range of each variable

      samp.range <- function(x){
      myrange <- diff(range(x))
      return(myrange)
      }
      my.ranges <- apply(cars.data,2,samp.range)
      cars.std <- sweep(cars.data,2,my.ranges,FUN=”/”)
      # Getting distance matrix:

      dist.cars <- dist(cars.std)

      # Single linkage:

      cars.single.link <- hclust(dist.cars, method=’single’)

      # Plotting the single linkage dendrogram:

      plclust(cars.single.link, labels=row.names(cars.data), ylab=”Distance”)

      # Opening new window while keeping previous one open

      windows()

      # complete linkage:

      cars.complete.link <- hclust(dist.cars, method=’complete’)
      # Plotting the complete linkage dendrogram:

      plclust(cars.complete.link, labels=row.names(cars.data), ylab=”Distance”)
      # Average linkage:

      cars.avg.link <- hclust(dist.cars, method=’average’)
      # Plotting the average linkage dendrogram:

      plclust(cars.avg.link, labels=row.names(cars.data), ylab=”Distance”)
      # Average Linkage dendrogram seems to indicate two major clusters,

      # Single Linkage dendrogram may indicate three.

      # Single Linkage Solution:

      cut.3 <- cutree(cars.single.link, k=3)
      # printing the “clustering vector”

      cut.3

      cars.3.clust <- lapply(1:3, function(nc) row.names(cars.data)[cut.3==nc])
      # printing the clusters in terms of the car names

      cars.3.clust

      # Cluster 1 seems to be mostly compact cars, Cluster 2 is sports cars, Cluster 3 is large Luxury sedans

      17. 给出R中的“rbind()”和“cbind()”函数的例子

      Cbind():顾名思义,它用于将两列绑定在一起。绑定两列时要记住的一个事实是,两列中的行数必须相同。

      让我们用一个例子来理解这一点:
      这是“Marks”数据集,包含三个主题的标记

      面试|R语言面试问题集2

      我们将绑定一个新的数据集“percent”绑定它,它由两列组成。

      面试|R语言面试问题集2

      让我们使用cbind函数把两个数据集的列合并起来

      cbind(Marks,Percentage)
      面试|R语言面试问题集2

      由于这两个数据集中的行数是相同的,所以我们在“cbind()”函数的帮助下合并了列

      18. 给出R中的while和for循环的例子。

      While循环:

      面试|R语言面试问题集2

      For循环:

      面试|R语言面试问题集2

      19. 举例说明“dplyr”包中的“select”和“filter”函数。

      面试|R语言面试问题集2

      Select:这个来自“dplyr”包的函数用于从数据集中选择一些特定的列

      Birth_weight %>% select(1,2,3)->birth
      面试|R语言面试问题集2
      Birth_weight %>% select(-5)->birth
      面试|R语言面试问题集2

      Filter:这个来自“dplyr”包的函数用于根据一个条件过滤掉一些行:

      Birth_weight %>% filter(mother_age>35)->birth
      面试|R语言面试问题集2
      Birth_weight %>% filter(baby_wt>125 & smoke=="smoker")->birth
      面试|R语言面试问题集2

      20.stringR包的用途是什么?给出一些Stringr中的函数示例。

      StringR中的一些函数:

      初始化

      fruit <- c('apple', 'orange', 'grape', 'banana', 'guava')

      把字符串转换为大写

      str_to_upper(fruit)
      面试|R语言面试问题集2

      查找字母的数

      str_count(fruit)
      面试|R语言面试问题集2

      你若是觉得有用,清点赞并分享给其它朋友。更多数据知识,请点击阅读原文。您有任何问题,请留言。

      内容推荐


      • 视频|RStudio项目和版本控制

      • 视频|我常用的R包

      • 视频|R语言编码风格

      • 视频|RMarkdown帮准您做数据报告


      测试结尾

      请关注“恒诺新知”微信公众号,感谢“R语言“,”数据那些事儿“,”老俊俊的生信笔记“,”冷🈚️思“,“珞珈R”,“生信星球”的支持!

      • 分享:
      作者头像
      weinfoadmin

      上一篇文章

      与你分享生信好用的单行命令
      2019年5月10日

      下一篇文章

      一年了
      2019年5月11日

      你可能也喜欢

      3-1665801675
      R语言学习:重读《R数据科学(中文版)》书籍
      28 9月, 2022
      6-1652833487
      经典铁死亡,再出新思路
      16 5月, 2022
      1-1651501980
      R语言学习:阅读《R For Everyone 》(第二版)
      1 5月, 2022

      搜索

      分类

      • R语言
      • TCGA数据挖掘
      • 单细胞RNA-seq测序
      • 在线会议直播预告与回放
      • 数据分析那些事儿分类
      • 未分类
      • 生信星球
      • 老俊俊的生信笔记

      投稿培训

      免费

      alphafold2培训

      免费

      群晖配置培训

      免费

      最新博文

      Nature | 单细胞技术揭示衰老细胞与肌肉再生
      301月2023
      lncRNA和miRNA生信分析系列讲座免费视频课和课件资源包,干货满满
      301月2023
      如何快速批量修改 Git 提交记录中的用户信息
      261月2023
      logo-eduma-the-best-lms-wordpress-theme

      (00) 123 456 789

      weinfoadmin@weinformatics.cn

      恒诺新知

      • 关于我们
      • 博客
      • 联系
      • 成为一名讲师

      链接

      • 课程
      • 事件
      • 展示
      • 问答

      支持

      • 文档
      • 论坛
      • 语言包
      • 发行状态

      推荐

      • iHub汉语代码托管
      • iLAB耗材管理
      • WooCommerce
      • 丁香园论坛

      weinformatics 即 恒诺新知。ICP备案号:粤ICP备19129767号

      • 关于我们
      • 博客
      • 联系
      • 成为一名讲师

      要成为一名讲师吗?

      加入数以千计的演讲者获得100%课时费!

      现在开始

      用你的站点账户登录

      忘记密码?

      还不是会员? 现在注册

      注册新帐户

      已经拥有注册账户? 现在登录

      close
      会员购买 你还没有登录,请先登录
      • ¥99 VIP-1个月
      • ¥199 VIP-半年
      • ¥299 VIP-1年
      在线支付 激活码

      立即支付
      支付宝
      微信支付
      请使用 支付宝 或 微信 扫码支付
      登录
      注册|忘记密码?