【问题标题】:R ff, how to add new column/row to existing FF objectR ff,如何将新列/行添加到现有 FF 对象
【发布时间】:2015-12-03 10:19:57
【问题描述】:

很多时候我走进这个:

我已经有一个大的 ff 对象(由矩阵/数组表示),然后我想向它添加一个新的列/行,因为我有一些更新的数据并且不想创建一个新的大对象从头开始(这可能非常耗时)。

我正在尝试这样的事情:

t <- cbind(a = c(1,2,3,4,5), b=c(6,7,8,9,10))
ff.t <- ff(t, dim=dim(t))
# Adding new column works fine
dim(ff.t) <- c(5, 3)

ff (open) double length=15 (15) dim=c(5,3) dimorder=c(1,2)
     [,1] [,2] [,3]
[1,]    1    6    0
[2,]    2    7    0
[3,]    3    8    0
[4,]    4    9    0
[5,]    5   10    0

# Adding new row gives error
dim(ff.t) <- c(6, 4)

dim(ff.t) dim<-.ff(*tmp*, value = c(6, 4)) 中的错误: 你只能改变最快的旋转暗淡 1:dim&lt;-(*tmp*, 值 = c(6, 4)) 2:dim&lt;-.ff(*tmp*, 值 = c(6, 4)) 3: stop("你只能改变最快的旋转dim")

这是什么意思? 有没有办法解决这个问题并将列/行添加到 ff 对象(自然也增加文件大小)?如果您无法避免创建一个新对象,那么最好的方法是什么?新列可以用 0 或 NA 初始化。

谢谢

【问题讨论】:

  • 转换成ffdf不是更简单吗?
  • 一个 ffdf 可能是一种选择,但我担心它可能比传统的 ff 数组表示慢得多。我的数据只是数字,并且会有很多列(大约 10k),所以我猜这会为每一列创建一个文件,对吧?这不会影响性能吗?

标签: r ff


【解决方案1】:

我要做的是将现有对象转换为 data.frame,这样可以轻松添加列和行。

添加列示例:

t <- as.data.frame(t)

t["newColName"] <- NA
t$newColName <- *whatever value* (Example: t$a - t$b)

【讨论】:

    猜你喜欢
    • 2011-03-31
    • 1970-01-01
    • 2014-03-12
    • 2013-08-03
    • 1970-01-01
    • 2011-04-20
    • 2014-02-10
    • 2012-07-26
    • 2015-12-27
    相关资源
    最近更新 更多