2016-10-23 3 views
1

私はこのMRA_DFデータフレームを持っています。このデータフレームをAccountMRAという関数に渡したいと思います。ここから、MRA_DF $ price列を削除し、MRA_DF $ price列を最初の列にして、MRA_DF $ distを2番目の列にします。それから私はこれを返す。私はこれを理解できません。関数にデータフレームを渡し、列を再配置して新しいデータフレームを返すにはどうすればよいですか?

このデータフレーム= MRA_DF

speed dist price 
1  4 2 200 
2  4 10 100 
3  7 4 300 
4  7 22 400 
5  8 16 100 
6  9 10 200 

理想的な出力:パッケージをdplyr使用

 price dist 
1  200 2 
2  100 10 
3  300 4 
4  400 22 
5  100 16 
6  200 10 
+1

MRA_DF [、c(3,2)] ' –

+1

を使用するか、インデックス:MRA_DF [c(" price "、" dist ")]の代わりに列名を使用します。 – Gregor

答えて

0

、あなたがドロップするように列を取り込むことができる機能との列名のリストを作ることができます特定の順序:

library(dplyr) 

# create dataframe 
MRA_DF = data.frame(speed = c(4, 4, 7, 7, 8, 9), dist = c(2, 10, 4, 22, 16, 10), price = c(200, 100, 300, 400, 100, 200)) 

# AccountMRA takes in a dataframe, column order, and a column to drop 
#' @param colorder --> list of column names in specific order 
#' @param todrop --> column name to drop 
#' @param data1 --> dataframe to manipulate 
#' @return --> return formatted dataframe 
AccountMRA <- function(data1, colorder = c('price', 'dist'), todrop = 'speed'){ 
    toreturn <- as.data.frame(data1 
         %>% dplyr::select(-eval(parse(text = todrop)))) 
    return(toreturn[, colorder]) 
} 

AccountMRA(MRA_DF, colorder = c('price', 'dist'), todrop = 'speed') 

# has the following output: 
# price dist 
# 1 200 2 
# 2 100 10 
# 3 300 4 
# 4 400 22 
# 5 100 16 
# 6 200 10 
0

基本的なRサブセットを使用できます。

MRA_DF = data.frame(speed = c(4, 4, 7, 7, 8, 9), dist = c(2, 10, 4, 22, 16, 10), price = c(200, 100, 300, 400, 100, 200)) 

df <- MRA_DF[,c("price","dist")] 

# df 
# price dist 
#1 200 2 
#2 100 10 
#3 300 4 
#4 400 22 
#5 100 16 
#6 200 10 
関連する問題