0
私はdata.table
リストを持っていて、いくつかの列を数値に変換してrowSums
を実行したいと思います。私はすべての列を数値に変換する方法を理解しようとしています。data.table list内の関数を複数の列に割り当てる方法は?
これは私が試みたものです。
# Obtain data
tbl<-get_data(sqlquery = tqry, dbase=db1, server=serv)
# Names of the columns that need to be converted to numeric
score<-names(tbl)[grep('score',names(tbl),ignore.case = T)]
tbl[,class(AcceptingNewPatientsScore)]
[1] "character"
### Wrong - Having problem here
tbl[,eval(score):=as.numeric(get(score))]
tbl[,class(AcceptingNewPatientsScore)]
[1] "numeric" # It converted but jumbled scores.
tbl[,tscore:=rowSums(.SD,na.rm = FALSE),.SDcols=score]
'x [grep(patt、x)]の代わりに' grep(patt、x、value = TRUE) 'を使うことができます。私は、あなたの問題は、必要がないときにevalのスコアを選ぶことによって引き起こされると思います。 '(score):='はうまくいくはずです...右側に複数のカラムがある場合は 'mget'を使います。数値への変換についてはhttps://stackoverflow.com/q/16846380/をご覧ください。 – Frank