四舍五入R数据框中的特定列时,数学函数错误的非数字参数

时间:2019-02-23 19:02:38

标签: r dataframe rounding

我有一个进入R数据框的数据库表

Id   fName       lName     Personal_Number      Score   Country_Of_Birth
1    martin      Ingram    1-(939)-(106)-(9049) 59.099  Tanzania
2    trevor      Richards  1-(214)-(725)-(5955) 65.266  Eritrea
3    fitzgerald  Barron    1-(312)-(980)-(1499) 65.052  Kiribati

我只知道在运行时要舍入哪一列,上面的示例只有1个这样的列,但是我的表可能有任意数量的可以应用舍入的列。

所以我的列名是从变量col派生的,我的舍入数字来自ruleData,我这样写:

mydataframe[[col]]  <- round(mydataframe[,col]), ruleData)

它给了我

Error:Error in round(mydataframe[[col]]), ruleData): 
Error:  non-numeric argument to mathematical function

我了解这是因为round函数正在寻找数字矢量,但是当我尝试检查mydataframe中的模式时,我得到了:

                   Id            fName            lName          contact 
Output:       "numeric"      "character"      "character"      "character" 
Output:           Score Country_Of_Birth 
Output:       "numeric"      "character" 

问题: -我必须使用数据框,所以不能仅将其更改为向量/矩阵或数据表。 -我的舍入函数的列名和精度始终来自变量。 -结果应与mydataframe相同,其中Score的值应在小数点后2位(请注意,分数中的值现在在小数点后2位)

Id   fName       lName     Personal_Number      Score   Country_Of_Birth
1    martin      Ingram    1-(939)-(106)-(9049) 59.10  Tanzania
2    trevor      Richards  1-(214)-(725)-(5955) 65.27  Eritrea
3    fitzgerald  Barron    1-(312)-(980)-(1499) 65.05  Kiribati

1 个答案:

答案 0 :(得分:0)

根据@ladylala@Santiago Capobianco的建议,将ruleData强制转换为as.numeric可以解决此问题。