【问题标题】:Store vectors as data frame entries?将向量存储为数据框条目?
【发布时间】:2012-06-21 18:30:56
【问题描述】:

我对 R 很陌生,想知道是否有办法将向量存储在数据框中,这样数据框的每个条目都是一个向量。

我想将条目分配给一个向量,并且以后可以更改它:

df[2,]$Value <- c(1,2,0)
df[3,]$Value <- c(0,0,1)
df[3,]$Value <- df[3,]$Value + c(2,4,4)

但只能通过替换数据框中的 3 个不同条目来完成这项工作。有谁知道这是否可能?

df: 
      V1    V2     V3 
1 c(1,2) c(2,3) c(0,0) 
2 c(1,1) c(0,0) c(2,2)

【问题讨论】:

  • 您的意思是希望能够使用不同大小的向量?
  • 如果您停止尝试将其硬塞到数据框中,而只使用列表列表,则不会那么混乱。
  • 同意。列表或数组的列表可能会更好。这是不可能的,因为数据框是 2D 对象

标签: r


【解决方案1】:

您不能拥有 3D 数据框。您可以通过多种方式实现这一点,但从概念上解释最简单的方法可能是在列表中包含一个列表:

> entries <- list(V1=list(c(1,2), c(1,1)), V2=list(c(2,3), c(0,0)), V3=list(c(0,0),c(2,2)))
> entries
$V1
$V1[[1]]
[1] 1 2

$V1[[2]]
[1] 1 1


$V2
$V2[[1]]
[1] 2 3

$V2[[2]]
[1] 0 0


$V3
$V3[[1]]
[1] 0 0

$V3[[2]]
[1] 2 2

现在假设您想更改 V1 的第二个条目,您只需这样做

条目$V1[[2]]

条目[[1]][[2]]

【讨论】:

  • 我了解如何替换行或列;我想将向量存储在数据框中,每个条目一个向量: df: V1 V2 V3 1 c(1,2) c(2,3) c(0,0) 2 c(1,1) c( 0,0) c(2,2)
  • 进入是什么意思?你是说行吗?
  • 查看有问题的数据框示例...抱歉,这太令人困惑了!
  • 嗯,你可以,因为data.frameslists,但可能并不容易。参见this question中的dput
  • 或者,do.call(rbind, list(V1=list(c(1,2), c(1,1)), V2=list(c(2,3), c(0,0)), V3=list(c(0,0),c(2,2))))
猜你喜欢
  • 2012-07-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-02
  • 1970-01-01
  • 2017-10-22
  • 2014-08-01
相关资源
最近更新 更多