【问题标题】:add elements into a data structure without knowing the data size in R在不知道 R 中数据大小的情况下将元素添加到数据结构中
【发布时间】:2014-04-07 19:14:05
【问题描述】:

我想在 win 7 上使用数据结构在 R 中保存数据(双精度)。

但是,数据大小可能为 100k 或更少。我不知道数据的大小。所以,我不能给出数据结构的长度。

我只需要将它们保存在 R 中的数据结构中。

我试过列表,但我得到了:

> x <- list()
> str(x)
> append(x, 10)
  [[1]]
  [1] 10

> append(x, 50)
  [[1]]
  [1] 50
> length(x)
   [1] 0

我也试过矢量

> y <- vector()
> str(y)
  logi(0) 
> append(y, 8)
  [1] 8
> length(y)
  [1] 0

更新

例子,

I have data, 89.601 , 56.302 , 7.231 ,  .... 

我需要从文件中读取它们,然后将它们保存在 R 中的数据结构中,以便我以后可以使用它们。

我还需要用数据做一个qq-plot。列表或向量,哪个更适合绘图?谢谢!

我只想同时优化空间和性能。在 R 中将整个文件加载到 data.frame 中比读取然后逐行处理文件更好吗? 如果整个文件大小有 1.2 亿个数字/字符串怎么办?

任何帮助将不胜感激。

【问题讨论】:

  • 您是否尝试创建一个给定长度的列表或向量,并将其所有元素设置为某个默认值?
  • @joran,不,我需要将数字保存到数据结构中。我不知道数据的确切大小。所以,我不能预先定义数据结构的长度。谢谢!
  • 在那种情况下,我根本无法理解这个问题。你想用你的示例代码实现什么,它创建一个空向量然后附加一个值(但不保留结果)?
  • 数据从何而来?磁盘、数据库等上的文件?
  • 一次读取一行文件不是典型的 R 使用模式。 100k 的最大大小并不是很大。使用标准 R 函数可以将这么多数据轻松快速读入内存。如果一次读取一行文件实际上更慢,我不会感到惊讶。

标签: r list vector


【解决方案1】:

您没有存储结果。 R 类似于函数式编程范式。所以在这种情况下,你需要的是:

x <- list()
x <- append(x, 10)
x <- append(x, 50)

然后输入length(x),看看你会得到什么。

【讨论】:

  • 它有效!我需要用数据做一个qq-plot。列表或向量,哪个更适合绘图?谢谢!
  • vector 并小心使用这种方法。如果你有很多数据,它会很慢。不过,不确定你是如何做到的。也请选择它作为答案:)
猜你喜欢
  • 2011-12-27
  • 1970-01-01
  • 2014-09-04
  • 1970-01-01
  • 1970-01-01
  • 2019-12-20
  • 2020-04-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多