Преобразуйте тип столбцов по имени в df с помощью цикла for - PullRequest
0 голосов
/ 15 декабря 2018

Я пытаюсь преобразовать тип определенных столбцов в моей df.Поэтому я создаю вектор с именами столбцов, которые я хотел бы изменить, а затем перебираю его.Но вместо того, чтобы изменить тип, я создаю новый код "i" с этим кодом.

Почему это не работает?

iris <- tbl_df(iris)

cols.to.change = c("Petal.Width", "Species")

for (i in cols.to.change) {
  iris <- transform(iris, i = as.character(i))
}

Когда я делаю это без цикла, это работает.

iris <- transform(iris, Petal.Width = as.character(Petal.Width))

Ответы [ 2 ]

0 голосов
/ 15 декабря 2018

Вы можете преобразовать все столбцы в списке в символы, не нуждаясь в цикле for, например:

iris[cols.to.change] <- lapply(iris[cols.to.change], as.character)

Надеюсь, это поможет.

0 голосов
/ 15 декабря 2018

Как насчет подстановки столбцов, приведения их к любому классу, который вы хотите, и перезаписи результата в исходный файл data.frame?

cols.to.change = c("Petal.Width", "Species")

for (i in cols.to.change) {
  iris[, i] <- as.character(iris[, i])
}

> str(iris)
'data.frame':   150 obs. of  5 variables:
 $ Sepal.Length: num  5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...
 $ Sepal.Width : num  3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
 $ Petal.Length: num  1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
 $ Petal.Width : chr  "0.2" "0.2" "0.2" "0.2" ...
 $ Species     : chr  "setosa" "setosa" "setosa" "setosa" ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...