R:迭代添加新列

R: Adding new columns iteratively

我正在尝试编写一个代码,它按行和迭代地评估我的数据框的 3 列,并生成一个具有评估中找到的最小值的新列。这是我的数据:

  mydata
  Jan  Feb  Mar  Apr  May  Jun  Jul  Aug
1 .25  .50  .50  .25  .75  .50  .25  .25
2 .75  .25  .75  .50  .25  .50  .50  .50
3 .50  .50  .50  .50  .25  .25  .75  .25
4 .25  .75  .75  .50  .75  .75  .75  .75

这就是我想要制作的:

  mydata
  Jan  Feb  Mar  Apr  May  Jun  Jul  Aug  -Mar  ...  -Aug
1 .25  .50  .50  .25  .75  .50  .25  .25  .25   ...  .25
2 .75  .25  .75  .50  .25  .50  .50  .50  .25   ...  .50
3 .50  .50  .50  .50  .25  .25  .75  .25  .50   ...  .25
4 .25  .75  .75  .50  .75  .75  .75  .75  .25   ...  .75

-Mar 显示 (Jan:Mar) 的最小值,-Apr 显示 (Feb:Apr) 的最小值,依此类推。

我尝试了以下方法:

> for (i in 3:8)

{ 
  Newcolname <- as.name(paste("-",i,sep=""))
  mydata$Newcolname<- pmin(mydata[,i-2],mydata[,i-1],mydata[,i])
}

但这只给出了我的 1 个新列,其中包含 (jun:aug) 的最小值,是 mydata 的最后 3 列。我想要的是上面描述的 5 个新列,但我不知道该怎么做。有人吗?

如果我不清楚,请告诉我。提前致谢!

你可以试试这个:

for (i in 3:8) {
  Newcolname <- paste0("-", names(mydata)[i]) 
  mydata[[Newcolname]] <- pmin(mydata[,i-2],mydata[,i-1],mydata[,i])
}

其中 names(mydata)[i] 是 mydata 中的第 i 个名称,例如names(mydata)[3]Mar。要创建新列,您必须将变量放入 [[ ]]。按照您的方式,它创建了一个名为 Newcolname.

的新列