我想使用属性来存储像Stata这样的变量名称及其标签:而不是像打印变量名称(例如输出表格),我宁愿拥有其属性(因此我称之为属性name
)。但是如何在循环中访问它呢?
dummies <- c("a", "b", "c")
attr(dummies, "names") <- c("First letter", "Second letter", "Third letter")
for (dummy in dummies) {
# do something with dummy
# e.g. accessing a variable in a dataframe
# and printing something to a table
print attr(dummies$dummy, "names") # doesn't work
print attr(dummies, "names")$dummy # doesn't work
}
作为替代方法,可以使用矩阵:
dummies&lt; - c(“a”,“b”,“c”) 名称&lt; - c(“第一个字母”,“第二个字母”,“第三个字母”) dummies.matrix&lt; - matrix(c(dummies,names),nrow = 3)
然后我循环dummies.matrix
:
for (i in 1:nrow(dummies.matrix)) {
print(dummies.matrix[i,1]) # value
print(dummies.matrix[i,2]) # name or label
}
但这既不方便也不直观。
答案 0 :(得分:0)
看起来你有一个索引问题。
dummies <- c("a", "b", "c")
attr(dummies, "names") <- c("First letter", "Second letter", "Third letter")
for (i in seq_along(dummies)) {
print(dummies[i])
print(attr(dummies[i], "names"))
}
作为样式点,请谨慎使用dummy
之类的索引作为名为dummies
的向量。在某些时候,向量和索引开始混合在一起,这使得解释代码应该做什么变得更加困难。