R中带有IF语句的迭代循环操作

时间:2018-12-03 16:42:59

标签: r for-loop if-statement while-loop

我有一个包含三行五列的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)
 }
}

此代码部分起作用。我的问题是代码不会根据上一个数据帧修改来升级操作。有人可以帮助您了解代码失败的地方吗?

1 个答案:

答案 0 :(得分:0)

不确定我是否正确理解,但据我所知,你只是想要

dataset[names(dataset)[colSums(dataset) <= 9]]