|
|
1
247
如果是字符串列表,只需使用
这也适用于向量,所以我可以得到加分吗?
编辑(2015年2月1日):
这篇文章将在五岁生日那天发表。一些好心的读者不断地用它重复任何缺点,所以也一定会看到下面的一些评论。一个建议
一般来说,r类型会使所有类型和用途都很难有一个且只有一个习语。 |
|
|
2
91
OP(在2012年4月更新的问题的修订版)感兴趣的是知道是否有办法在摊销的固定时间中添加到列表中,例如可以用C++来完成。
算法效率捕获增长特征,无论是在时间(执行时间)还是空间(消耗的内存量) 随着问题规模的扩大 . 给定一个固定大小的问题,对各种解决方案运行性能测试并不能解决各种解决方案的增长率问题。op想知道是否有一种方法可以在“摊销常数时间”中将对象追加到r列表中。那是什么意思?为了解释,首先让我描述一下“恒定时间”:
还有许多其他效率类的算法;我遵从 Wikipedia article 以便进一步讨论。 我感谢@cronacronis给出的答案,因为我是r的新手,有一个完整构建的代码块来对本页上提供的各种解决方案进行性能分析,这很好。我借用他的代码进行分析,我复制了下面的代码(用函数包装):
@cronacronis发布的结果显然表明
首先,关于min/lq/mean/median/uq/max值的一个词:由于我们对5次运行中的每一次执行完全相同的任务,在理想情况下,我们可以预期每次运行所需的时间将完全相同。但是第一次运行通常偏向于更长的时间,因为我们正在测试的代码还没有加载到CPU的缓存中。在第一次运行之后,我们希望时间是相当一致的,但有时我们的代码可能会由于计时器滴答声中断或其他与我们正在测试的代码无关的硬件中断而从缓存中被逐出。通过测试代码片段5次,我们允许在第一次运行期间将代码加载到缓存中,然后给每个代码片段4次运行完成的机会,而不受外部事件的干扰。出于这个原因,并且由于我们每次都在完全相同的输入条件下运行完全相同的代码,因此我们将只考虑“min”时间,以便在各种代码选项之间进行最佳比较。 请注意,我选择先运行2000个问题大小,然后运行20000个问题大小,因此从第一次运行到第二次运行,我的问题大小增加了10倍。
执行
让我们先看看
其他解决方案的性能
其他的解决方案都没有达到
其他大多数解决方案的性能似乎都是o(n)。例如,
|
|
|
3
40
在其他答案中,只有
和
使用方法如下:
这些解决方案可以扩展为完全对象,这些对象本身支持所有与列表相关的操作,但这仍将作为读者的练习。 命名列表的另一个变体:
基准点
使用@phoneTagger代码(基于@cron arconis代码)进行性能比较。我还添加了
结果:
我补充说
所有变体
我还研究了r的c实现,这两种方法对于任何大小都应该是o(1)append,直到内存耗尽为止。
我也变了
内存开销
在C R实现中,每个分配的对象有4个字和2个整数的开销。这个
|
|
|
4
17
在口齿不清的情况下,我们是这样做的:
虽然是“cons”,而不仅仅是“c”。如果需要从empy列表开始,请使用l<-null。 |
|
|
5
6
你也许想要这样的东西?
这不是一个很礼貌的功能(分配给
|
|
|
6
5
如果将列表变量作为带引号的字符串传入,则可以从函数中访问它,如:
所以:
或额外学分:
|
|
|
7
5
我对这里提到的方法做了一个小小的比较。
结果:
|
|
|
8
4
不知道为什么你认为你的第一种方法行不通。lappend函数中有一个错误:length(list)应该是length(lst)。这样可以很好地工作,并返回一个带有附加obj的列表。 |
|
|
9
3
尝试lappend函数
以及本页的其他建议 Add named vector to a list 再见。 |
|
|
10
2
我想你想做的是 事实上 按引用传递(指针)到函数--创建一个新环境(通过引用传递给函数),并将列表添加到其中:
现在只修改现有列表(不创建新列表) |
|
|
11
2
这是向r列表添加项的简单方法:
或以编程方式:
|
|
|
12
2
事实上
您将按预期获得:
但是如果你加上一个矩阵
它适用于任何其他对象,您将按预期获得:
最后,您的功能变成:
它适用于任何类型的对象。你可以变得更聪明,做:
|
|
|
13
1
还有
它非常简单有效。 |
|
|
14
1
为了验证,我运行了@cron提供的基准代码。有一个主要的区别(除了在较新的i7处理器上运行得更快之外):
这里引用的是从@cron的答案中逐字复制的基准代码(以防他以后更改内容):
|
|
|
15
0
|
|
|
16
0
这是一个非常有趣的问题,我希望下面的想法能为解决这个问题提供一种方法。这个方法提供了一个没有索引的平面列表,但是它有列表和未列表以避免嵌套结构。我不知道速度,因为我不知道如何基准它。
|
|
|
17
-1
所以我们可以使用上面的代码轻松地附加元素/对象 |
|
|
Hard_Course · 用另一列中的值替换行的最后一个非NA条目 11 月前 |
|
Mark R · 使用geom_sf()删除地球仪上不需要的网格线 11 月前 |
|
|
Joe · 根据对工作日和本周早些时候的日期的了解,找到一个日期 11 月前 |
|
Ben · 统计向量中的单词在字符串中出现的频率 11 月前 |
|
|
TheCodeNovice · R中符号格式的尾随零和其他问题[重复] 11 月前 |
|
dez93_2000 · 在R管道子功能中引用管道对象的当前状态 11 月前 |
|
|
accibio · 在ggplot2中为同一变量创建两个连续的颜色渐变比例 11 月前 |
|
|
Mankka · 如何在Ggplot2中绘制均匀的径向图 11 月前 |