无法复制《R语言入门》中的示例

5

我在各处搜索了一下,但无法弄清楚这个问题。我完全不懂 R 语言,正在通过 "R for Beginners" 学习。

在第6页上,我还没开始就无法复制他们的示例。当试图解释 "max.level" 时,他们展示了...

> name <- "Carmen"; n1 <- 10; n2 <- 100; m <- 0.5
> M <- data.frame(n1, n2, m)

> ls.str(pat = "M")
M : ‘data.frame’: 1 obs. of 3 variables:
$ n1: num 10
$ n2: num 100
$ m : num 0.5

> ls.str(pat="M", max.level=-1)
M : ‘data.frame’: 1 obs. of 3 variables:

但在R中,我得到了...
> name <- "Carmen"; n1 <- 10; n2 <- 100; m <- 0.5
> M <- data.frame(n1, n2, m)

> ls.str(pat = "M")
M : 'data.frame':       1 obs. of  3 variables:
 $ n1: num 10
 $ n2: num 100
 $ m : num 0.5

> ls.str(pat="M", max.level=-1)
Error in ls.str(pat = "M", max.level = -1) : 
  unused argument (max.level = -1)

我不知道我做错了什么或该如何修复它。指南中是否有错别字?是否有一些库没有正确加载?
非常感谢您的帮助!
2个回答

6
不足为奇。您使用的参考文献是2005年的。R已经改变了(很多!!!)。函数ls.str不再有参数max.level。建议您查看更新内容,请使用?ls.str

如果您需要示例,请查看帮助页面底部。

您真的应该使用最新的R文档,网址为https://cran.r-project.org/。这是最新的。对于初学者来说,“R介绍”非常好,长度适中。玩得开心!


更新

检查函数参数的快速方法是使用函数args。例如:args(ls.str)

R的错误信息非常有用。因此,每当您看到“未使用的参数”时,都应检查您是否正确传递了参数。

我相信在2005年,R仍处于R-2.**版本。因为当我在2011年开始使用R时,它仍然是R-2.14.**。但现在R已经升级到R-3.**。从2**版本到3**版本,R内核发生了很大变化。


非常感谢!我甚至没有想到查看手册的版本。另外,参数提示让我更容易进行更好的故障排除。谢谢! - Jonathan L S

0
刚开始学习,第6页,我无法复制他们的示例。在试图解释“max.level”时,他们展示了...。
没错。现在是2021年1月,就像你曾经一样新手,我遇到了“R for Beginners”示例中的同样问题。然而,我做了“正确的事情”,并查阅了CRAN-R.project.org上的官方R文档。这里是当前(当时)参考手册(2020-1010)的片段。
Arguments
...
max.level     maximal level of nesting which is applied for displaying nested structures, e.g.,
              a list containing sub lists. Default 1: Display only the first nested level.
...

啊!但不要被这个迷惑了。虽然它被列为一个参数,但它不是ls.str(...)参数。你必须看用法部分。它不会显示max.level作为ls.str()lsf.str()参数,但会在print()中显示。

我使用粗体来表示参数,因为如果我读过《2005年初学者的R》,作者明确区分参数选项,并将max.level称为选项(第3页,第2.1节,“R的工作原理”)。很抱歉,但我还不知道这种区别是否重要。

我的回答的重点是,如果你是R的新手,“R for Beginners”是(目前)推荐的入门指南,但不要期望它准确无误,因为它(显然)没有得到维护。相反,找到“参考”手册,并阅读函数的完整概述(例如ls.str())。熟悉文档的语义。

(额外福利)

如果你是熟悉其他编程语言的程序员,R参考手册可能与你预期的有些不同。(就像对我来说,为什么他们把print()放在ls.str()下面,而不是直接引用print()部分呢?这样max.level根本不会出现在ls.str()下面。是因为print()对于ls_str对象的语义是特殊的吗?那为什么不链接到ls_str对象并在那里讨论其特殊性呢?)随着学习的深入,逐渐习惯这些差异。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接