使用数据框中的循环添加新列

时间:2013-12-26 15:22:49

标签: r

我在R中创造了这个功能,一切都很好:

test<-function (x){
   ma <-apply(x,2,max)
   mi <-apply(x,2,min)
   x2 <-data.frame(x)
   for (i in 1:length(ma))
     x2[,i] <- ifelse(x2[,i]==ma[i],"max",ifelse(x2[,i]==mi[i],"min","FALSE"))
   print (x2)
    }

如果我在新数据框中添加相同信息,我该怎么办?如何自动添加新列?

非常感谢

1 个答案:

答案 0 :(得分:1)

您可以使用apply函数实际执行此操作:

test <- function(x) {
  x2 <- apply(x, 2, function(y) {
    ifelse(y==max(y), "max", ifelse(y==min(y), "min", "FALSE"))
  })
  return(as.data.frame(x2))
}

df = data.frame(x = c(2, 1, 3), y = c(1, 2, 3))
test(df)
#       x     y
# 1 FALSE   min
# 2   min FALSE
# 3   max   max