R:如何将向量分配给列表列表(带索引)

时间:2018-01-30 19:59:15

标签: arrays r list vector variable-assignment

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

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)分配给相应的矩阵。

1 个答案:

答案 0 :(得分:1)

首先,您需要使用一个容易让您拥有列表列的对象。一个很好的选择是tibble,它原生支持“list-columns”。

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