加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

如何将矢量分组到矢量列表?

发布时间:2020-12-14 23:58:48 所属栏目:Java 来源:网络整理
导读:我有一些看起来像这样的数据(例如假数据): dressId color 6 yellow 9 red10 green 10 purple 10 yellow 12 purple 12 red 其中颜色是因子向量.不能保证因子的所有可能水平实际出现在数据中(例如,颜色“蓝色”也可以是其中一个水平). 我需要一个矢量列表,将
我有一些看起来像这样的数据(例如假数据):
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

我究竟做错了什么?有没有办法初始化结果,所以它不会转换为数字向量,但成为向量列表?

还有,还有另一种方法来完成整个事情而不是“滚动我自己的”吗?

解决方法

split.data.frame是组织这个的好方法;然后提取颜色成分.
d <- data.frame(dressId=c(6,9,10,12,12),color=factor(c("yellow","red","green","purple","yellow","red"),levels=c("red","orange","blue","purple")))

我认为你想要的版本实际上是这样的:

ss <- split.data.frame(d,d$dressId)

您可以通过提取颜色组件来获得更像您请求的列表:

lapply(ss,"[[","color")

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读