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