2017-01-17 15 views
1

私は列の種類を変更する関数を作成しようとしています。R関数を作成

サンプル

df = data.table(commission = as.character(c("100 EUR", "200 EUR", "300 EUR"))) 
df$commission <- as.character(df$commission) 

str(df) 
#Classes ‘data.table’ and 'data.frame': 3 obs. of 1 variable: 
#$ commission: chr "100 EUR" "200 EUR" "300 EUR" 
#- attr(*, ".internal.selfref")=<externalptr> 

機能

colconv <- function(data,colname){ 
     data$colname <- gsub(data$colname, pattern = " EUR", replacement = "", fixed = T) 
     data$colname <- as.numeric(data$colname) 
     data 
} 

そして私が手...

colconv(df, commission) 

#Classes ‘data.table’ and 'data.frame': 3 obs. of 1 variable: 
#$ commission: chr "100 EUR" "200 EUR" "300 EUR" 
#- attr(*, ".internal.selfref")=<externalptr> 

は、それがRを通じて処理しますが、それは何も変わりません。

誰でもどのように動作させるように提案できますか?またはスマートな他のソリューション?

+1

あなたは文字通り、あなたの関数に 'colname'という変数を書いています。対話的に変数を選択しようとするには、 '$'を使わないでください。 – thelatemail

+0

@MatthewLundberg私は、行の最後にデータを入力することで変換の結果を返すと考えました。 – tmhs

+0

@thelatemail right、それで、関数内で反復する特定の列を指定する方法はありますか? – tmhs

答えて

2

あなたはおそらくベクトルに作用して、例えば...

colconv <- function(x){ as.numeric(gsub(x, pattern = " EUR", replacement = "", fixed = T)) } 

新しい変数を割り当てるために、それを呼び出すために、あなたの関数を書く方がいいでしょう。次に:

df[, commission := colconv(commission)] 
関連する問題