在R中的多个表和列中更改列类型

时间:2018-05-07 19:26:07

标签: r for-loop type-conversion iteration column-types

我有几个共享相同列名的数据框。例如......

数据框A,列a,b,c
数据框B,列c,d,e
数据框C,列a,b,c,d

我想转换名为' b'的列。和' c'到字符(如果表中存在这些列)。我可以不重复这样做吗

A$b <-as.character(A$b)
A$c <-as.character(A$c) 
B$b <-as.character(B$c)

1 个答案:

答案 0 :(得分:0)

charnames <- c('a','b','c','d','e')

indA <- colnames(A) %in% charnames
A[indA] <- lapply(A[indA], as.character)

indB <- colnames(B) %in% charnames
B[indB] <- lapply(B[indB], as.character)

# ...

这样可以保证,如果没有列名匹配,则框架不会被修改。

如果您要求进一步自动化,那么我建议您将框架与个别变量分开,而不是list-of-data.frames

示例:

lst <- list(indA, indB)
lst <- lapply(lst, function(df) {
  ind <- colnames(df) %in% charnames
  df[ind] <- lapply(df[ind], as.character)
  df
})