我有一个进入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
答案 0 :(得分:0)
根据@ladylala
和@Santiago Capobianco
的建议,将ruleData
强制转换为as.numeric
可以解决此问题。