表中的列由列表组成,对于每一行,查找列表的最小值并附加到新列

时间:2017-11-09 20:11:40

标签: r dataframe

正如标题所说,我有一个列'值',其中包含每个条目的值列表。我想在列表中找到每行的最小值,并将其附加到新列中。以下是我根据这个答案Extract the maximum value within each group in a dataframe尝试过的(除其他事项外)。 不幸的是,我只设法找到整个列的最小值,并将相同的最小值应用于每一行。

df <- df[,'minVal' := min(unlist(df$values))]

1 个答案:

答案 0 :(得分:2)

正如您所发现的那样,min将返回整个列的最小值。听起来每个条目都是一个列表,当您取消列表时,您将获得所有值的向量,其中min将返回最小值。

相反,您可以apply min对列表中的每个条目进行最小化。

此外,:=任务已到位。您不需要使用df分配回<-,而data.table中您可以直接引用列,不要使用df$values

试试这个:

library(data.table)

df <- data.table(a = 1:3, values = list(1:6, 2:4, 9:11))
df[, minVal := sapply(values, min)]
df
#    a      values minVal
# 1: 1 1,2,3,4,5,6      1
# 2: 2       2,3,4      2
# 3: 3     9,10,11      9