我有几个共享相同列名的数据框。例如......
数据框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)
答案 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.frame
s。
示例:
lst <- list(indA, indB)
lst <- lapply(lst, function(df) {
ind <- colnames(df) %in% charnames
df[ind] <- lapply(df[ind], as.character)
df
})