изменить формат (добавить "." для 1000 цифр) для фрейма данных с неопределенным количеством столбцов - PullRequest
0 голосов
/ 08 мая 2020

У меня есть фрейм данных с n столбцами, и эти столбцы (если они существуют) содержат «большие» числа, например 1234. Теперь я хочу изменить значения вроде 1234 на 1,234. Я могу сделать это с помощью этого:

format(round(as.numeric(c(1234)), 1), nsmall=0, big.mark=".", decimal.mark=",")

Но мне нужна функция для всех столбцов (и не уверен, сколько их), начиная с третьего столбца (и каждого после него), поэтому я попробовал следующее:

df[3:ncol(df)] <- format(round(as.numeric(c(df[3:ncol(df)]))), nsmall=0, big.mark=".")

Это возвращает мне ошибку: объект 'list' не может быть принудительно набран для ввода 'double'.

Кто-нибудь знает решение для этого и, возможно, почему я получаю эта ошибка?

С уважением

1 Ответ

1 голос
/ 08 мая 2020

Я бы использовал:

correct=function(x){ format(round(as.numeric(c(x)), 1), nsmall=0, big.mark=".", decimal.mark=",")}
df[,3:ncol(df)]=apply(df[,3:ncol(df)],2,correct) #apply through columns

Вы можете изменить функцию correct, если вам не нравится вывод с кавычками

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...