我有一个包含wilderness
的四个指标变量的大型数据集。我希望将它们折叠成单个因子变量,将变量名称作为级别。当我在下面的函数之外执行此操作时,它工作正常。当在函数内部时,wilderness
将转换为类“character”。
这是正常的,wilderness
是data.frame(fct)
中level = variable name的一个因素:
to_factor = function(var, df){
for (i in 1:ncol(df)){
var[df[, i] == 1] = i
}
factor(var)
}
fct = fct.og[, 1:10]
fct$wilderness = to_factor(fct$wilderness, fct.og[, 11:14])
levels(fct$wilderness) = colnames(fct.og[, 11:14])
这会将wilderness
转换为data.frame(fct)
中的class =字符:
to_factor = function(var, df){
for (i in 1:ncol(df)){
var[df[, i] == 1] = i
}
factor(var)
levels(var) = colnames(df)
}
fct = fct.og[, 1:10]
fct$wilderness = to_factor(fct$wilderness, fct.og[, 11:14])
正在寻找一个易于重现的示例,但未找到要使用的基础数据集。数据集是here,虽然它非常大(道歉)。如果想到基础数据集,请告诉我,我很乐意更新以使其更具可重复性。任何想法都非常感激。感谢。