我有一个包含三行五列的data.frame。我想使用IF语句对结果进行迭代升级,直到达到我的条件为止。更具体地说,我想在数据框中执行累积列减少。条件是最终数据帧将包含列总和小于或等于9(V1,V2和V3)的值。
我一直在编写代码,但是我很难应用累积迭代参数。到目前为止,我的代码是:
dataset<-data.frame(V1=c(2,3,4),V2=c(1,2,3),V3=c(0,1,1),V4=c(5,5,3),V5=c(7,8,9))
my.func<-function(x){
df<-data.frame(Class=colnames(x), Val = colSums(x), row.names = 1:length(x))
if(any(df$Val>9)){
z<-as.character(df[which.max(df$Val),1])
w<-x[,-which(colnames(x)==z)]
dados<-data.frame(Class=colnames(w), Val = colSums(w), row.names = 1:length(w))
if(any(dados$Val<=9)){
h<-dados
}
return(h)
}
}
此代码部分起作用。我的问题是代码不会根据上一个数据帧修改来升级操作。有人可以帮助您了解代码失败的地方吗?
答案 0 :(得分:0)
不确定我是否正确理解,但据我所知,你只是想要
dataset[names(dataset)[colSums(dataset) <= 9]]