我有一个定义了一些颜色的命名向量。
my_colors = c("C_T" = "salmon", "C_G" = "gold", "C_A" = "mediumseagreen", "T_G" = "lightseagreen", "T_C" = "royalblue1", "T_A" = "orchid1")
我想创建一个大小为N的列表,其中每个条目以数字命名并包含向量my_colors。列表的结构需要适合特定的格式,因为我将它提供给一些非常严格的函数。这里有一些代码可以手动生成所需的结果并展示必要的结构:
my_list = list("1" = my_colors, "2" = my_colors, "3" = my_colors, "4" = my_colors, "5" = my_colors, "6" = my_colors)
str(my_list)
我尝试编写一个循环来填充空列表
test_list = list()
for (i in 1:6) {
test_list[i] = my_colors
}
但是这会返回抱怨长度的错误消息
我也试过
test_list = list()
for (i in 1:6) {
test_list[[i]] = my_colors
}
和
test_list = list()
for (i in 1:6) {
x = character(i)
test_list[x] = my_colors
}
但这两种方法都没有给我一个test_list,其结构与my_list相同。如何重新创建我用于以递归方式填充my_list的手动列表生成?
答案 0 :(得分:1)
如果你从这开始(你的一项努力不应该抛出任何错误)
test_list = list()
for (i in 1:6) {
test_list[[i]] = my_colors
}
......唯一缺少的是正确的名字。轻松修复:
names(test_list) <- 1:6
喔。现在我看到@PierreLafortune已经建议了。如果在添加.Names
属性之前,您已经在这两个对象上运行all.equal
,那么您会看到这个(可能是有用的)结果:
> all.equal(my_list, test_list)
[1] "names for target but not for current"
您也可以通过输入
查看底层结构 dput(my_list)
dput(test_list)
....并注意到“外部”属性存在差异。