如何在R中创建tibble列表列 实现向量的向量存储效果
问题解决方案
报错原因
你当前的写法会将所有ar的数值拼接为一个长度为24的普通原子向量,和seed、sd列的12行长度不匹配,因此触发维度冲突报错。
要实现每行存长度为2的向量,需要将ar定义为列表列:tibble支持列表类型的列,每个元素可以是任意长度的向量/对象。
正确实现代码
df2 = tibble( seed = rep(c(289805, 671086, 799837), 4), sd = rep(c(1, 3, 5, 10), each=3), # 将每个长度为2的向量作为列表的单个元素再重复4次 ar = rep(list(c(0.4, 0.4), c(0.45, 0.45), c(0.35, 0.6)), 4) )
如果已经生成过df1,也可以直接修改列:
library(dplyr) df2 <- df1 %>% mutate(ar = rep(list(c(0.4, 0.4), c(0.45, 0.45), c(0.35, 0.6)), 4))
效果验证
打印df2即可看到你预期的输出格式,访问某一行的向量时使用双中括号提取即可,比如提取第一行的ar向量:
df2$ar[[1]] # 输出 [1] 0.4 0.4
内容的提问来源于stack exchange,提问作者Daniel James
相关产品推荐
相关产品推荐

