3

是否有简洁(但相当彻底)的教程让人们习惯在 MATLAB 中工作,以加快编写 R 代码的速度。

这是我想到的一个特殊问题:根据我对 R 文档和教程的有限经验,我对 R 中的数据类型以及如何操作它们感到很困惑。例如,什么是向量、矩阵、列表、数据框等以及它们之间的关系。我还没有找到清楚地解释基本数据类型的来源,以至于我想知道这种语言是否在设计上是模棱两可的。

4

1 回答 1

7

如果您在尝试学习另一种工作方式不同的编程语言时主要只熟悉一种编程语言,那总是很困难,因为您希望以不同的方式思考问题,而这些不正确的期望会导致问题。很难有一个适合来自其他每种语言的学生的介绍性指南(“你会认为你应该做 X,但在 R 中,你应该做 Y”)。但是,我可以向您保证,R 的设计初衷并非模棱两可。

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

  • alist只是一组有序的元素。这可以是任何长度,并且包含任何旧类型的东西。例如,x <- list(5, "word", TRUE)
  • avector也是一个有序的元素集合。尽管它可以是任意长度,但元素必须都是同一类型。例如,x <- c(3,5,4)x <- c("letter", "word", "a phrase")x <- c(TRUE, FALSE, FALSE, TRUE)
  • amatrix是向量的向量,其中所有分量向量具有相同的长度和类型。例如,x <- matrix(c("a", "b", "c", "d"), ncol=2)
  • adata.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()(将行绑定在一起)将创建一个矩阵。
  • 我不知道有一个函数会输出任何对象的类型。最接近的可能是?class,但这有时会给出,例如,“整数”,我认为你想要“向量”。还有mode(), 和typeof(), 它们是相关的,但不是你要找的。在这里这里了解更多关于它们之间的区别。要检查对象是否为特定类型,您可以使用?is.vectoris.<specific type>()等。
  • 要将对象强制(即“强制转换”)为特定类型,您可以使用as.vector(),但这仅在满足条件(例如,上面提到的)时才有效。
于 2013-03-09T16:19:56.937 回答