如何解决数据框在一维情况下未更改名称
我想创建一个函数,该函数对第二个输入-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 举报,一经查实,本站将立刻删除。