我有一个列名为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)
}
但是这不起作用。我如何才能使此循环正常工作,或者有更好的解决方案? 谢谢
答案 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])