我已经四处寻找,但无法想象这个人。我是R的总菜鸟,我从头开始学习“R for Beginners”
勉强进入它,pg。 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)
我不知道我做错了什么或如何解决它。指南中有拼写错误吗?是否有一些我没有正确加载的库?
非常感谢!
答案 0 :(得分:5)
不足为奇。你使用的参考是在2005年.R已经改变了(很多!!!)。函数max.level
不再存在参数ls.str
。我建议你去?ls.str
赶上更新。
如果您需要示例,请查看该帮助页面的底部。
你真的应该在https://cran.r-project.org/使用最新的R文档。这是最新的。 “R的介绍”对初学者来说非常好,中等长度。玩得开心!
<强>更新强>
检查函数具有哪些参数的快速方法是使用函数args
。例如,args(ls.str)
。
来自R的错误消息非常有用。所以每当你看到“未使用的参数”时,你应该检查你是否正确传递了参数。
我相信在2005年,R仍然是R-2版本。**。因为当我在2011年拿到R时,它仍然是R-2.14。*。但现在R在R-3。**。从版本2 **到版本3 **,R内核发生了很大的变化。
答案 1 :(得分:0)
几乎没有,pg。 6、我无法复制他们的样本。在试图解释“max.level”时,他们显示...
嗯。现在是 2021 年 1 月,就像你曾经的菜鸟一样,我在“R 初学者”示例中遇到了同样的问题。但是,我做了“正确的事”并查阅了关于 CRAN-R.project.org 的官方 R 文档。这是来自current (at the time) reference manual (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 for Beginners”,作者会明确区分参数和选项 并将 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
对象并讨论那里的特殊性?)。随着您了解的更多,习惯这些差异。