数据框在一维情况下未更改名称

问题描述

我想创建一个函数,该函数对第二个输入-tran_list中提到的数据框中的每一列取不同的值。

例如,如果trans_list的第一项是'diff',那么我应该对第一列进行区别,并添加到列名'_diff'

如果trans_list的第二项不是'q_diff',那么我什么也不做。

如果trans_list的第三项是'diff',那么我应该对第三列进行区别,并添加到列名'_diff'。等等...

transformation<-function(data,trans_list){
   #Unlisting trans_list
  trans_vec<-unlist(trans_list)
   #For which arguments trans_list is set do 'diff' we apply differencing. 
  data[which(trans_vec=='diff')]<-rbind(NA,apply(data[which(trans_vec=='diff')],2,diff))
   #For which arguments trans_list is set to 'diff' we add '_diff' to column name
  colnames(data)[which(trans_vec=='diff')]<-paste0(colnames(data)[which(trans_vec=='diff')],'_diff')
  data
}

让我们举个例子:

df<-data.frame(1:3,4:6,7:9)
transformation(df,trans_list=list('diff','diff'))
    > transformation(df,'diff'))
  X1.3_diff X4.6_diff X7.9
1        NA        NA    7
2         1         1    8
3         1         1    9

请注意,一切正常。适当的列有所不同,并且列名也已更改。但是,让我们开始:

> transformation(df,trans_list=list('diff'))
  X1.3 X4.6 X7.9
1   NA    4    7
2    1    5    8
3    1    6    9

现在让我们注意到第一列有所不同,但是列名没有更改-我也不知道为什么。在一维的情况下,能否请您帮助更改此列名?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)