Plyr 基于 which.min for hole data.frame with colwise 不工作
Plyr based on which.min for hole data.frame with colwise not working
你好,我有一个列表 re
,其中的元素包含具有列名的数据帧:c(值、差异、样本 1、样本 2、样本 3、...),最多样本 100-1000。
列 "values" 没有唯一值,列 diff 表示与另一个向量的差异(不包含在 data.frames 中)。
我得到了前重要两列的示例:
values<- c(1,1,2,2,3,4,4,4)
diff <- c(1,2,1,2,1,2,2,1)
现在我想(对于列表中的每个数据帧)减少数据集,只有一个唯一的元素 values
留下 diff 中的最小值。所以在大写情况下:
值=c(1,2,3,4)
差异<-c(1,1,1,1)
我试过 plyr:
for (k in 1:length(re)) {
ret[[k]] <- ddply(re[[k]], .(valueData), summarise, re[[k]][which.min(diff),]) }
给出错误:
Error in vector(type, length) :
vector: cannot make a vector of mode 'closure'.
因为我不仅在 data.frames 中有 "values" 和 "diff" 列,而且还有更多不同大小的列,所以我不能只命名每一列 :
ret[[k]] <- ddply(re[[k]], .(valueData), summarise, diff=min(diff),
Sample1=Sample1[which.min(diff)],Sample2=Sample2[which.min(diff)],Samplex...)
那么我该如何解决这个问题,或者除了 plyr 还有其他选择吗?
有什么想法吗?
非常感谢!!!
试试这个:
lapply(re,function(df){
df <- df[order(df$values,df$diff),]
df[!duplicated(df$values),]
})
只需按升序对数据框进行排序,然后选择 values
列中的第一个唯一值。
你好,我有一个列表 re
,其中的元素包含具有列名的数据帧:c(值、差异、样本 1、样本 2、样本 3、...),最多样本 100-1000。
列 "values" 没有唯一值,列 diff 表示与另一个向量的差异(不包含在 data.frames 中)。
我得到了前重要两列的示例:
values<- c(1,1,2,2,3,4,4,4)
diff <- c(1,2,1,2,1,2,2,1)
现在我想(对于列表中的每个数据帧)减少数据集,只有一个唯一的元素 values
留下 diff 中的最小值。所以在大写情况下:
值=c(1,2,3,4)
差异<-c(1,1,1,1)
我试过 plyr:
for (k in 1:length(re)) {
ret[[k]] <- ddply(re[[k]], .(valueData), summarise, re[[k]][which.min(diff),]) }
给出错误:
Error in vector(type, length) :
vector: cannot make a vector of mode 'closure'.
因为我不仅在 data.frames 中有 "values" 和 "diff" 列,而且还有更多不同大小的列,所以我不能只命名每一列 :
ret[[k]] <- ddply(re[[k]], .(valueData), summarise, diff=min(diff),
Sample1=Sample1[which.min(diff)],Sample2=Sample2[which.min(diff)],Samplex...)
那么我该如何解决这个问题,或者除了 plyr 还有其他选择吗?
有什么想法吗? 非常感谢!!!
试试这个:
lapply(re,function(df){
df <- df[order(df$values,df$diff),]
df[!duplicated(df$values),]
})
只需按升序对数据框进行排序,然后选择 values
列中的第一个唯一值。