使用string中的变量名称访问变量值,R

时间:2015-02-18 17:28:17

标签: arrays r string list

简介

数据集有大量age.year个变量:age.1990, age.1991, etc.我有一个字符串值length(age.years)的数组,表示那些age.years[1]返回{{1}的变量等等。

需要

我想搜索每个记录的"age.1990"变量,以找到值age.year。最终,如果60等于60,则新变量age.1991[1]将采用值Y.60[1]

问题

如何使用数组中的字符串作为变量名来避免手动编写每个Y.1991[1]变量? var.year似乎不起作用。

Get()

1 个答案:

答案 0 :(得分:1)

您可以使用括号中的粘贴来访问列,就像使用$。

一样
big.data[paste0(age.years[1])]

此外,您只能使用数字来访问这样的列。

years <- c(1990:1992)
big.data[paste0("age.",years[1])]

循环将像这样工作。

for (iy in 1:length(years)){
  big.data$Y.60 <- NA
  big.data$Y.60  <- ifelse(big.data[paste0("age.",years[iy])] == 60,     +
     paste0("Y.",years[iy]),big.data$Y.60 ) 
 }

如果我理解你的目的。

<强>更新

或者作者@jtd的替代答案,括号而不是粘贴。

for (iy in 1:length(age.years)) {
   big.data$Y = ifelse(big.data[[age.years[iy]]] == 60,
              big.data[[Y.years[iy]]],
              big.data$Y
              )
}