小编Dav*_*man的帖子

复制修改; 运行此代码时会发生什么?x < - list(1:10); x [[2]] < - x

我对"高级R"(https://adv-r.hadley.nz/names-values.html)第3.36节中的问题4感到有些困惑.我链接的章节解释了我在附加的图像中使用的约定.我将简要总结一下.对于那些不熟悉本书的人以及那些不想点击链接并阅读作者关于类似于我的图表描述的人,我添加了一个简短的解释,我在图像中使用的约定低于其余部分.这个帖子.

运行此代码会发生什么?画一张图

x <- list(1:10)
x[[2]] <- x
Run Code Online (Sandbox Code Playgroud)

我理解这里创造的是什么.x <- list(1:10)创建一个列表.该列表有一个指向向量1:10的元素.之后x[[2]] <- x运行,X点有两个元素的列表.第一个元素指向矢量1:10.第二个元素是对与原始列表相同的列表的引用(或者它可能不仅与原始列表相同,但实际上是原始列表?).我只是对在新列表中复制和/或引用哪些对象(不是变量,对象)感到困惑.

这是尝试解决方案.

刚运行后x <- list(1:10),名称x绑定到列表对象.该列表有一个引用,即向量(1:10). 在此输入图像描述

这是我困惑的地方.我不确定x[[2]] <- x执行时会发生什么.这是我最好的猜测,我认为这是错误的.当x[[2]] <- x被执行时,使得x的对象的副本最初结合到制成.对于该副本,将创建指向原始对象的第二个元素.

在此输入图像描述

我假设我对x[[2]] <- x执行不正确时会发生什么的解释.如果是这样,有人可以帮我理解发生了什么吗?如果我碰巧是正确的,有人可以帮助解释我为什么是正确的吗?


在我使用的图像中,圆角正方形表示名称/变量.黑色箭头是从名称到对象的绑定(与赋值箭头指向R的方向相反).下面的矩形表示内部有绿色圆圈时的列表.绿色圆圈表示列表的元素.由于列表元素是对象的引用,因此绿色箭头指向列表元素引用的对象.

在第一个图像中,列表有一个元素,该元素指向矢量1:10.

在第二个图像中,列表对象的第一个元素指向向量1:10.第二个元素是对列表的引用.

copy r list

7
推荐指数
1
解决办法
185
查看次数

Creating dplyr function that can tell if variable input is a string or a symbol

I've been studying the "Programming with dplyr" vignette because I want to create functions that use dplyr functions. I would like to use the functions I make in both shiny applications and interactive R work. For use in shiny, I would like these functions to take string arguments and convert them to symbols using the sym function. For use in interactive sessions, I would like these functions to have the option to not have to use strings. So the functions …

r dplyr non-standard-evaluation quosure

5
推荐指数
1
解决办法
371
查看次数

标签 统计

r ×2

copy ×1

dplyr ×1

list ×1

non-standard-evaluation ×1

quosure ×1