我有一个可复制的例子:

# I have 4 dataframes in a listy with a few observations that repeat themselves
df_1 <- data.frame(x = c(1, 2, 3, 4), y = c('apple', 'pineapple', 'orange', 'grape'))
df_2 <- data.frame(x = c(2, 3, 4, 5, 6, 7), y = c('watermelon', 'orange', 'halibut', 'apple', 'iron', 'grape'))
df_3 <- data.frame(x = c(2, 3, 4, 5, 6, 7, 9, 0), y = c('rock', 'pineapple', 'apple', 'tire', 'bomb', 'star', 'coconut', 'grape'))
df_4 <- data.frame(x = c(1, 4, 9), y = c('grape', 'apple', 'rock'))

# All inside a another list
df_list <- list(df_1, df_2, df_3, df_4)

我想要一个函数,它返回在每个rabrame中的y列中重复的值,而不考虑该列中观察的顺序,因此函数的结果应该仅为:

[1] "apple" "grape"

我try 了reduce(intersect, big_list),但该函数没有捕获数据帧中所有重复的值.这可能是因为每列中重复值的位置不同,或者因为列表中的数据帧之间的列大小不相等.

推荐答案

要查找所有数据帧中出现的值,可以使用Reduce()intersect()应用到每个y列(我们可以使用lapply()提取).

Reduce(intersect, lapply(df_list, \(df) df$y))
# [1] "apple" "grape"

或者,您可以:

Reduce(
    \(df1, df2) intersect(df1, df2$y),
    df_list[-1],
    init = df_list[[1]]$y
)
# [1] "apple" "grape"

R相关问答推荐

通过绘图 Select 线串几何体并为其着色

如何创建构成多个独立列条目列表的收件箱框列?

编码变量a、b、c以匹配来自另一个数据点的变量x

从有序数据中随机抽样

根据R中两个变量的两个条件删除带有dspirr的行

次级y轴R gggplot2

如何自定义Shapviz图?

在R中创建一个包含转换和转换之间的时间的列

如何使用列表中多个列表中的第一条记录创建数据框

如何用书面利率绘制geom_bar图

使用`Watch()`和`renderUI()`时,不再满足仍出现在SHILINY AFTER条件中的条件输入

用两种 colored颜色 填充方框图

停止ggplot将多行减少到一行

在使用SliderInput In Shiny(R)设置输入数据的子集时,保留一些情节痕迹

我正在try 创建一个接近cos(X)的值的While循环,以便它在-或+1-E10范围内

如何更改包中函数中的参数?

将边列表转换为路径长度列表

重写时间间隔模糊连接以减少内存消耗

R,将组ID分配给另一个观测ID变量中的值的组合

从多行中 Select 最小值