нечисловой аргумент ошибки математической функции при округлении определенного столбца в R-кадре данных - PullRequest
0 голосов
/ 23 февраля 2019

У меня есть таблица базы данных, которую я помещаю в кадр данных 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 цифрами после десятичной запятой (обратите внимание, что значения в Score теперь имеют 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 голосов
/ 25 февраля 2019

Как предложено @ladylala и @Santiago Capobianco, приведение ruleData к as.numeric решило проблему.

...