我在寻找的R资源,于是我开始寻找在"概论R" 这里的r-project.org.我做了,立即被难倒了.
我想我已经弄清楚发生了什么,我的问题基本上就是
R简介的前言建议从附录A中的介绍性会议开始,一开始就是这段代码和评论.
x <- rnorm(50)
y <- rnorm(x)
Generate two pseudo-random normal vectors of x- and y-coordinates.
Run Code Online (Sandbox Code Playgroud)
文档说(第一个也是唯一的非可选)参数rnorm
是结果向量的长度.因此x <- rnorm(50)
,从正态分布产生50个随机值的向量,平均值为0,标准差为1.
到现在为止还挺好.但为什么rnorm(x)
似乎做了什么y <- rnorm(50)
或者做了什么y <- rnorm(length(x))
?这些替代方案中的任何一个对我来说都更清晰.
我猜测会发生什么是这样的:
对于包装rnorm
不关心什么样的事情x
是,只是传递到底层C函数的指针到C struct
的x
作为R对象.
用C表示的R对象是结构,后跟"数据"; 实数的R向量的C表示的数据以两个整数开始,第一个是向量的长度.(向量元素遵循那些整数.)我通过阅读R internals 在这里找到了这个.
如果编写了一个C函数来从传递的指针到R对象中找到一个R整数的值,并且用一个指向R向量的实数的指针调用它,那么它会找到向量的长度.寻找单个整数.
除了我的主要问题"我怎样才能更容易地找出这样的东西?"之外,我不介意知道我认为发生的事情是否正确以及rnorm(x)
在这种情况下是否是惯用的R这一事实或更多一个草率的选择.鉴于它做了一些有用的东西,它可以依赖它,还是只是幸运的行为表达式在R中没有明确定义?
我习惯于强类型语言,如C或SQL,它们更容易理解(对我来说)语义,并且还提供更全面的引用,因此任何对R具有编程语言理论焦点的引用或针对那些习惯强打字的人也会很好.
r ×1