我有许多数据帧列我希望转换为因子而不考虑每个单独的字段。如何迭代列名称,如果匹配正则表达式将它们转换为因子?我来自Python世界,我还不了解R中的循环和字符串替换。
伪代码:
for name in df.columns.names:
if name matches "regex":
df$name <- factor(df$name)
答案 0 :(得分:1)
大概:
df[ , grepl('regex' , names(df)) ] <-
lapply( df[ , grepl('regex' , names(df)) ], factor)
在这种情况下也可以使用grep
。 j
和[
的{{1}}参数可以采用逻辑或数字参数。
答案 1 :(得分:0)
我们可以使用type.convert
df[] <- lapply(df, function(x) type.convert(as.character(x)))