0

我无法将列表中的值标签分配给数值变量。我有一个list()包含十一个变量的数据集(以 a 的形式)。前五个变量每个都有单独的值级别,后六个每个变量都使用相同的 1-5 等级。我为前五个变量中的每一个创建了带有值标签的列表,并为比例创建了一个。现在我想自动将这些列表中的标签分配给我的变量。

我已将我的 11 个变量放在一个列表中,以便能够使用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()通常可行,还是我完全走错了路?

提前致谢!如果您需要更多信息,请发表评论。

4

1 回答 1

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)

这提供了与输入完全相同的输出格式。

于 2014-03-25T08:56:52.613 回答