我有一些看起来像这样的数据(例如假数据):
dressId color 6 yellow 9 red 10 green 10 purple 10 yellow 12 purple 12 red
其中颜色是因子向量.不能保证因子的所有可能水平实际出现在数据中(例如,颜色“蓝色”也可以是其中一个水平).
我需要一个矢量列表,将每件衣服的可用颜色分组:
[[1]] yellow [[2]] red [[3]] green purple yellow [[4]] purple red
保留连衣裙的ID会很好(例如,这个列表是第二列,ID是第一列的数据帧),但不是必需的.
我写了一个循环,它遍历行的数据帧行,而下一个ID是相同的,它将颜色添加到矢量. (我确信数据按ID排序).当第一列中的ID更改时,它会将向量添加到列表中:
result <- NULL while(blah blah) { some code which creates the vector called "colors" result[[dressCounter]] <- colors dressCounter <- dressCounter + 1 }
在努力获得所有必要的计数变量之后,我发现我不高兴它不起作用.第一次,颜色是
[1] yellow Levels: green yellow purple red blue
并且它被强制转换为整数,因此结果变为2.
在第二次循环重复中,颜色仅包含红色,结果变为简单的整数向量,[1] 2 4.
在第三次重复中,颜色现在是一个向量,
[1] green purple yellow Levels: green yellow purple red blue
我明白了
result[[3]] <- colors
Error in result[[3]] <- colors :
more elements supplied than there are to replace
我究竟做错了什么?有没有办法初始化结果,所以它不会转换为数字向量,但成为向量列表?
还有,还有另一种方法来完成整个事情而不是“滚动我自己的”吗?