如何使用"字符调用列表子集" R中的对象?

时间:2014-08-30 02:16:50

标签: r

我试图循环这个:

library(demography)
fr.mort$rate$male
fr.mort$rate$female
fr.mort$rate$total

为了得到这样的东西:

library(demography)
for (i in c("male", "female", "total")) {
  get(paste("fr.mort$rate$", i, sep = ""))
}

但它不起作用。我不明白为什么"得到"在这种情况下不起作用:)

请帮帮我!

1 个答案:

答案 0 :(得分:1)

有更简单,更安全的方法来对列表进行子集化。使用[子集进行尝试。 R的矢量化子集使得列表元素变得容易。以下是嵌套列表dat的示例。

> dat <- list(x = setNames(list(1,2,3,4,5), letters[1:5])
> dat$x[c("a", "c", "e")]
# $a
# [1] 1
#
# $c
# [1] 3
#
# $e
# [1] 5

在您的代码中,这将是

> library(demography)
> fr.mort$rate[c("male", "female", "total")]

我很确定大多数经验丰富的R用户会建议你这样做。