访问列表中每个元素的属性

时间:2015-08-04 13:43:36

标签: r for-loop attributes

我想使用属性来存储像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
}

但这既不方便也不直观。

1 个答案:

答案 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的向量。在某些时候,向量和索引开始混合在一起,这使得解释代码应该做什么变得更加困难。