我目前正在尝试使用以下初始化过程创建列表列表。
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
)分配给相应的矩阵。
答案 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