【问题标题】:Creating a list in which each list item has unique elements创建一个列表,其中每个列表项都有唯一的元素
【发布时间】:2016-09-13 12:57:06
【问题描述】:

我正在使用循环使用以下代码创建列表

for (i in 1:length(names))
{
a[i]<-filter(global,global$people_names==names[i]) %>% select(Class)
}

names 是一个向量,global 是一个数据框。我正在将names 的每个元素与每个people_names 进行比较,然后选择Class。如果Class 中的值对于每个people_names 都是不同的,则该代码运行良好。但是如果people_names“rocky”有课程:class1class2class3class3,我不能 在填充我的列表时删除重复的class3。使用 select(unique(Class)) 没有帮助。请帮忙。

【问题讨论】:

  • 请使用dput 提供可重现的示例以及预期输出。
  • 假设我的向量有第一个元素“rocky”。因此,我正在编写代码以在我的数据框 global$people_names 中找到“rocky”,并拾取与 people_names 为“rocky”的所有行相对应的另一个列元素(列名类)。我现在创建一个列表,其中每个列表项都具有一次拾取的结果。我只想选择不同的课程。

标签: r dplyr


【解决方案1】:

您可以在选择之后再添加一个管道,然后使用子集()和重复()删除违规列上的重复项,所以:

a[i]<-filter(global,global$people_names==names[i]) %>% 
    select(Class) %>%
    subset(!duplicated(Class))

希望这会有所帮助!

【讨论】:

  • 如果你将整个东西、管道和所有东西都包裹在 unique(); 中,Unique 可能会起作用。但是,使用 unique(Class) 会将整个 Class 列变成一个简短的唯一值列表,这些值将不再有意义地映射到任何东西上。
猜你喜欢
  • 2017-01-12
  • 2018-07-08
  • 2018-11-11
  • 2020-05-26
  • 2021-07-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多