首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在没有全局范围的情况下将方法添加到R列表中

在没有全局范围的情况下将方法添加到R列表中
EN

Stack Overflow用户
提问于 2018-03-24 11:16:59
回答 1查看 56关注 0票数 0

我想使用purrr::walk()将对象推到flifo堆栈上。循环工作正常,但我的walk()实现不能。

代码语言:javascript
运行
AI代码解释
复制
requireNamespace("flifo")

cards       <- letters[1:5]
deck_loop   <- flifo::fifo()
deck_purrr  <- flifo::fifo()

# Looping works correctly   
for( card in cards ) {
  flifo::push(deck_loop, card)
}
message("Deck size: ", as.integer(flifo::size(deck_loop) / 96), " cards")
# Returns: "Deck size: 5 cards"

# This version of calling purrr::walk() doesn't work.
purrr::walk(cards, function(card) flifo::push(deck_purrr, card))
message("Deck size: ", as.integer(flifo::size(deck_purrr) / 96), " cards")
# Returns: "Deck size: 0 cards"

我认为这个问题与fifo 使用列表如何保存对象和push()有关。在第三个函数中,除非使用全局赋值l3,否则不会修改<<-deck_purr的环境有什么窍门吗?

代码语言:javascript
运行
AI代码解释
复制
l3 <- list()
fx3 <- function(a) {
  # l3[[length(l3) + 1L]] <- a # Won't work b/c it's not a global assignment
  l3[[length(l3) + 1L]] <<- a
}
purrr::walk(11:15, function( x ) fx3(x))

顺便说一句,重栈包 (它没有实现LIFO堆栈)没有这个问题;我猜想这是因为它的R6内件处理堆栈的内部列表的作用域不同。

代码语言:javascript
运行
AI代码解释
复制
deck_rstack  <- rstack::stack$new()
purrr::walk(cards, function(card) deck_rstack$push(card))
message("Deck size: ", deck_rstack$size(), " cards")

2018年7月编辑: flifo开发人员在https://github.com/paulponcet/flifo/issues/1中解决了这个问题。

EN

回答 1

Stack Overflow用户

发布于 2018-03-24 15:30:03

查克人包支持FIFO并使用purrr::walk()加载各个元素。pushback()方法正在下面有C指针周围移动这些元素。

代码语言:javascript
运行
AI代码解释
复制
deck_dequer <- dequer::queue()
purrr::walk(cards, function(card) dequer::pushback(deck_dequer, card))
message("Deck size: ", length(deck_dequer), " cards")

虽然这解决了FIFO结构的具体情况,但我仍然很好奇,如果purrr::walk()可以像一个带有堆栈元素的顶级for()循环那样,那么是否有一个更大的原始问题的解决方案。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49468848

复制
相关文章
快手出海求生
随着八月接近尾声,众多上市公司的中期成绩单纷纷出炉,这其中就有视频社区B站、游戏直播斗鱼等内容平台的财报。不过,从其披露的财报中可以看出,如今内容平台的发展都不容乐观,而作为“短视频双雄之一”的快手近期交出的答卷中,也显露出了其对优质内容的迫切需求。
刘旷
2021/08/31
4460
快手出海求生
YY出海记
3月5日,YY欢聚时代发布2018年四季度以及全年财报,成为直播行业第一个交出2018年成绩单的公司。财报显示,2018年四季度YY欢聚时代净营收46.40亿元,同比增长28%;2018年全年净营收157.63亿元,同比增长36%;净利润16.42亿元。在非美国通用会计准则下,欢聚时代全年净利润31.96亿元,同比增长18.4%。
罗超频道
2019/04/30
9600
YY出海记
DataFrame(7):DataFrame运算——逻辑运算
https://alltodata.cowtransfer.com/s/b8aa2f26ca0947
朱小五
2020/07/17
2.5K0
DataFrame(7):DataFrame运算——逻辑运算
Spark DataFrame
DataFrame是一种不可变的分布式数据集,这种数据集被组织成指定的列,类似于关系数据库中的表。SchemaRDD作为Apache Spark 1.0版本中的实验性工作,它在Apache Spark 1.3版本中被命名为DataFrame。对于熟悉Python pandas DataFrame或者R DataFrame的读者,Spark DataFrame是一个近似的概念,即允许用户轻松地使用结构化数据(如数据表)。
week
2018/12/07
9220
创建DataFrame
SQLContext sqlContext = new SQLContext(sc);
编程那点事
2023/02/25
5220
揭秘熊猫TV HEVC直播
LiveVideoStack:熊猫直播HEVC直播间面向哪些用户,或哪些软件和硬件平台条件的用户开放?
LiveVideoStack
2021/09/02
1.7K0
熊猫烧香病毒简析[通俗易懂]
熊猫烧香从2007年1月肆虐网络到现在。已经过了查不多4个年头了。病毒的作者李俊现在也从监狱里被放了出来。在当时熊猫烧香确实给大家一个意外,它采用了一种新的方式对计算机的程序和系统造成了很严重的破坏。
全栈程序员站长
2022/11/17
2.3K0
DataFrame常用操作
在spark-shell状态下查看sql内置函数: spark.sql("show functions").show(1000) 比如:SUBSTR(columnName,0,1)='B' show,take,first,head df.show(30,false)df.take(10) df.first() df.head(3) 选择某列显示 df.select("column").show(30,false) 按条件过滤 df.filter("name='' OR name='NULL'").
sparkle123
2018/04/28
7610
蔚来汽车出海
过去一年在新冠疫情剧烈冲击之下,新能源汽车市场却依然实现了逆势突围。不只是特斯拉,国内的比亚迪以及在美股上市的蔚来、小鹏、理想等造车新势力,也都迎来了自己的高光时刻。
刘旷
2021/05/07
5780
蔚来汽车出海
医疗 AI “出海”记
对于“出海”这件事,是先在成熟和主流市场取得成绩,还是深入基层“自下而上”,本质上并不矛盾。可以确定的是,AI将会成为未来医疗市场的“通用语言”。
AI掘金志
2020/01/22
7160
点击加载更多

相似问题

getDeclaredMethods()和隐藏超类静态方法

29

“类方法”和“静态方法”有什么区别?

42

隐藏超类方法的静态方法的Typescript绑定

10

使重写方法的超类引用超类

20

超类隐藏方法

313
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文