Я понимаю ответ в R на повторяющиеся вещи, как правило, «apply()
», а не цикл. Есть ли лучший образец R-дизайна для неприятного кода, который я часто создаю?Изменить столбцы в кадре данных в R более чисто - возможно, используя() или apply()?
Итак, вытаскивая табличные данные из HTML, мне обычно нужно изменить тип данных и в итоге запустить что-то вроде этого, чтобы преобразовать первый формат столбца в дату (из десятичной) и столбцы 2-4 из строк символов с запятой тысяч разделителей, таких как «2,400,000», с числовым «2400000».
X[,1] <- decYY2YY(as.numeric(X[,1]))
X[,2] <- as.numeric(gsub(",", "", X[,2]))
X[,3] <- as.numeric(gsub(",", "", X[,3]))
X[,4] <- as.numeric(gsub(",", "", X[,4]))
мне не нравится, что у меня есть X [, число] повторяется на обоих левых перехватывающих сторон здесь, или что у меня есть в основном то же самое заявление повторяется для 2-4.
Есть ли способ R-стиля, позволяющий сделать X [, 2] менее повторяющимся, но все же без петли? Что-то вроде «применимо» к столбцам 2,3,4 --- функция, которая переназначает текущий столбец модифицированной версии на месте? »
Я не хочу создавать целую повторяющуюся функцию очистки, на самом деле, просто быструю анонимную функцию, которая делает это с меньшим количеством повторений.
Это именно то, что я имел в виду. Я не думаю, что, хотя вы знаете способ устранить, с X [2: 4] в качестве назначения с обеих сторон? – Mittenchops
Если вы хотите применить преобразование к каждому столбцу, вы можете сделать X [] <- lapply (X, function (x) as.numeric (gsub ("", "", Икс))) –