R遍历字符串并使用它来引用列名

时间:2019-01-30 23:19:51

标签: r string loops replace

我有一个列名为1990.x ..2000.x,1990.y,.. 2000.y的数据框。我想用相应年份的.y值替换以“ .x”结尾的变量中的NA。公式1990.x = 0.5 + 0.2 * log(1990.y)

我想做这样的事情:

for (v in colnames(df[ ,grepl(".x",names(df))])) {
  print(v)
  df$v <- ifelse(is.na(df$v), ols$coefficients[1]+ols$coefficients[2]*log(df$gsub(".x",".y",v)), df$v)
}

但是这不起作用。我如何才能使此循环正常工作,或者有更好的解决方案? 谢谢

1 个答案:

答案 0 :(得分:1)

为了方便起见,可以使用$运算符,但是不能在for循环内使用该循环,因为您选择的列的值将发生变化,例如,在for中环。您的代码将需要使用[运算符(方括号和闭括号)代替:

df[,v] <- ifelse(is.na(df[,v]), ols$coefficients[1]+ols$coefficients[2]*log(df$gsub(".x",".y",v)), df[,v])