我无法将列表中的值标签分配给数字变量。我有一个包含11个变量的数据集(以list()
的形式)。前五个变量各自具有单独的值级别,后六个变量各自使用相同的1-5级别。我为前五个变量中的每一个创建了带有值标签的列表,并为缩放创建了一个列表。现在我想自动将这些列表中的标签分配给我的变量。
我已将十一个变量放在一个列表中,以便能够使用mapply()
。
这是我当前状态的一个例子:
# Example variables:
a <- c(1,2,3,4) # individual variable a
b <- c(1,2,2,1) # individual variable b
c <- c(1,2,3,4,5) # variable c using the scale
d <- c(1,2,3,4,5) # variable d also using the scale
mydata <- list(a,b,c,d)
# Example value labels:
lab.a <- c("These", "are", "value", "labels")
lab.b <- c("some", "more")
lab.c <- c("And", "those", "for", "the", "scale")
labels.abc <- list(lab.a, lab.b, lab.c)
# Assigning labels in two parts
part.a <- mapply(function(x,y) factor(as.numeric(x), labels = y, exclude = NA), mydata[1:2], labels.abc[1:2])
part.b <- mapply(function(x,y) factor(as.numeric(x), labels = y, exclude = NA), mydata[3:4], labels.abc[3])
除了无法将两部分组合在一起外,我的主要问题是输出格式。 mapply()
以矩阵的形式给出结果,我需要再次包含特定变量的列表。
所以,我的问题是:如何在自动程序中分配值标签,结果再次得到变量列表,现在包含标记信息而不是数字?
我在这里很迷茫。我的mapply()
方法通常是可行的,还是我完全走错了路?
提前致谢!如果您需要更多信息,请发表评论。
答案 0 :(得分:0)
问题解决了!
感谢@agstudy指出SIMPLIFY = FALSE参数,该参数阻止mapply()将结果减少为矩阵。
正确的代码是
part.a <- mapply(function(x,y) factor(as.numeric(x), labels = y, exclude = NA), mydata[1:2], labels.abc[1:2], SIMPLIFY = FALSE)
这提供了完全相同的输出格式。