问题描述
我想创建一个函数,该函数对第二个输入-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 (将#修改为@)