【问题标题】:R: How to assign a vector to a list of lists (with an index)R:如何将向量分配给列表列表(带有索引)
【发布时间】:2018-07-09 19:39:29
【问题描述】:

我目前正在尝试使用以下初始化过程创建列表列表。

df = data.frame(
    memberA = rep(0, m),
    memberB = rep(0, m)
  )

我想通过以下方式进行分配。 (我使用i,因为我迭代了多个i=1..m)。

df[i, "memberA"] = assignVector

但是,我收到以下错误:

Error in `[<-.data.frame`(`*tmp*`, i, "memberA", value = c(-1.6950557554083,  : 
  replacement has 6 rows, data has 1

我想要实现的是将向量分配给df[i, "memberA"]

我非常假设我没有足够的列向量(因为memberA 是一个标量列表)。所以我尝试了以下(改变初始化):

df = data.frame(
    memberA = rep(0, m, n),
    memberB = rep(0, m, n)
  )

但是,这似乎不是正确的 R 方式。关于如何实现我想要实现的任何想法?我只想将向量(对于每个i=1..m)分配给相应的矩阵。

【问题讨论】:

  • @Julius 感谢您的快速响应!编辑了问题:) 我基本上想要实现的是将向量分配给df[i, "memberA"]。如何更改初始化,以便我可以考虑向量分配(即这样做:df[i, "memberA"] = assignVector 其中assignVector 是向量)。

标签: arrays r list vector variable-assignment


【解决方案1】:

首先,您需要使用一个可以轻松让您拥有作为列表的列的对象。一个不错的选择是tibble,它本机支持“列表列”。

library(tibble) # usually I would use library(tidyverse) which loads more useful packages

然后您需要初始化列表列而不是普通向量。

m <- 42
df <-  data_frame(
  memberA = vector("list", m),
  memberB = vector("list", m)
)  

接下来,对象df[1, "memberA"] 不是你想象的那样,你不能给它分配一个向量。你需要的是df$memberA[[1]](或df[[1, "memberA"]])。这些工作:

df$memberA[[1]] <- 1:3
df[[3, "memberB"]] <- 42:69

【讨论】:

  • 附带说明,所有这一切都适用于普通的旧 data.frame - df &lt;- data.frame(memberA = I(vector("list", m)), memberB = I(vector("list", m)))
猜你喜欢
  • 2021-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-23
  • 2012-11-06
  • 1970-01-01
  • 2019-08-22
  • 1970-01-01
相关资源
最近更新 更多