为习惯于MATLAB的人学习R,并与R数据类型混淆

pas*_*y51 3 r

是否有简明(但相当彻底)的教程,以使某人习惯在MATLAB中工作,快速编写R代码.

这是我想到的一个特殊问题:根据我对R文档和教程的有限经验,我对R中的数据类型以及如何操作它们留下了很多困惑.例如,什么是向量,矩阵,列表,数据框等,以及它们如何相关.我没有找到明确解释基本数据类型的来源,以至于我想知道语言是否因设计而模糊不清.

gun*_*ica 7

如果您在尝试学习另一种编程语言时,如果您只熟悉一种编程语言,那么总是很难,因为您希望以不同的方式思考问题,而这些不正确的期望会导致问题.要有一个适合来自其他语言的学生的入门指南是非常困难的('你会认为你应该做X,但在R中,你应该做Y').但是,我可以向你保证,R的设计并不含糊.

大多数情况下,您只需要获得介绍性指南并通过它.起初,这将是一项很多工作,令人沮丧,但这是唯一的方法.最后,它会变得更容易.也许我可以告诉你一些事情来启动这个过程:

  • a list只是一组有序的元素.这可以是任何长度,并包含任何旧类型的东西.例如,x <- list(5, "word", TRUE).
  • a vector也是一组有序的元素.虽然它可以是任何长度,但元素必须都是相同的类型.例如x <- c(3,5,4),x <- c("letter", "word", "a phrase"),x <- c(TRUE, FALSE, FALSE, TRUE).
  • a matrix是向量的向量,其中所有分量向量具有相同的长度和类型.例如,x <- matrix(c("a", "b", "c", "d"), ncol=2).
  • a data.frame是向量列表,其中所有组件向量具有相同的长度,但不必具有相同的类型.例如,x <- data.frame(category=c("blue", "green"), amount=c(5, 30), condition.met=c(TRUE, FALSE)).

(回复评论:)

  • 函数?c用于连接 ; c(c("a", "b"), c("c", "d")),不会创建矩阵,而是从两个较短的向量创建一个较长的向量.函数?cbind(将列绑定在一起)或rbind()(将行绑定在一起)将创建一个矩阵.
  • 我不知道将输出任何对象类型的单个函数.最接近的可能是?类,但这有时会给出,例如"整数",我认为你想要"向量".还有mode(),和typeof(),这是相关的,但不太你在找什么.在这里这里了解更多关于这些区别的信息.要检查对象是否是您可以使用的特定类型is.<specific type>(),例如?is.vector.
  • 要将对象强制(即" 强制转换 ")为特定类型,您可以使用as.vector(),但这仅在满足条件(例如,如上所述)时才有效.

  • +1作为一个在我来到R时相当熟悉Matlab的人(虽然我多年前曾使用过S),但我肯定建议你掌握R列表是什么以及它们是如何工作的.从某种意义上说,它们非常像R的通用主力.思考我不需要担心它们很可能在R方面取得了很大的进步,远远超过了我想要承认的程度.特别是,*数据框*在您意识到它们是列表时更有意义.另一件大事是要掌握*编写小函数作为其他函数的参数*; 这是R中的标准范例. (2认同)