【发布时间】:2018-03-28 11:11:50
【问题描述】:
我正在创建多个数据框,我希望每个数据框中的列与我创建的空白数据框模板中指定的类型相同
例如我有一个空白模板
template <- data.frame(
char = character(),
int = integer(),
fac1 = factor(levels = c('level1', 'level2', 'level3')),
fac2 = factor(levels = c('level4', 'level5')),
stringsAsFactors = FALSE
)
然后我想创建一些数据框,但想保持模板格式的列(即 char 是一个字符,fac2 是一个具有两个级别“level4”和“level5”的因子)
df1 <- data.frame(
char = c('a', 'b'),
int = c(1,2),
fac1 = c('level2', 'level1'),
fac2 = c('level4', 'level4')
)
df2 <- data.frame(
char = c('c', 'd'),
int = c(3,4),
fac1 = c('level3', 'level4'),
fac2 = c('level5', 'level4')
)
当我创建df1 和df2 时,我可以明显地指定列类型,但我想避免多次输入相同的内容,例如,如果水平发生变化,我只想要一个因素在一个地方改变它。
如果在不是级别的因素之一中创建了一个值(例如,上面“df2”中的“fac1”中的“级别 4”,则在转换为正确格式时应将其替换为 NA
【问题讨论】:
-
如果检查
str(template),char不是character。你需要stringsAsFactors = FALSE