R if()简单循环代码

R if()简单循环代码,r,loops,for-loop,nested-loops,R,Loops,For Loop,Nested Loops,假设我有两个数据集。我给我的第一列火车打电话,这是变量 month = c(1,1,1,2,2,2,3,3,3,4,4,4) day=c(3,8,12,3,8,12,3,8,12,3,8,12) trend=c(0.1,0.2,0.3,0.4,0.5,0.4,0.3,0.2,0.1,0.2,0.3,0.4) train=cbind(month,day,trend) 假设我的第二个集合叫做test,它有月和日变量 tsmonth = c(1,2,2,3,3,3,4,4,4) tsday=c

假设我有两个数据集。我给我的第一列火车打电话,这是变量

month = c(1,1,1,2,2,2,3,3,3,4,4,4)
day=c(3,8,12,3,8,12,3,8,12,3,8,12)
trend=c(0.1,0.2,0.3,0.4,0.5,0.4,0.3,0.2,0.1,0.2,0.3,0.4) 


train=cbind(month,day,trend)
假设我的第二个集合叫做test,它有月和日变量

tsmonth = c(1,2,2,3,3,3,4,4,4)
tsday=c(3,3,12,3,8,12,3,8,12)
现在,我想使用训练数据中的值填充测试集的趋势部分 例如: 在我的测试集中,1月3日,趋势值为0.1 测试中的第一个值应该是0.1 所以最后我应该得到一个

tstrend=0.1、0.4、0.4…依此类推

我试图编写这样的代码,但它给了我一个错误消息,我真的不知道该在这里更改什么

tstrend=rep(0,length(tsmonth))
for (i in 1:length(tsmonth)){
for (j in 1:length(month)){
if (tsday[i] = day[j] & tsmonth[i] =month[j])
{
tstrend[i] = trend[j]
}
}
}
我非常感谢你的帮助

谢谢,,
我不太明白您想做什么,但我确实发现if()语句有点问题,应该是:

if (tsday[i] == day[j] && tsmonth[i] == month[j])
==比较 =赋值

在大多数语言中: 布尔表达式&&另一个布尔表达式->布尔(真/假)和

例如:true&&true->true

位数组和位数组2->按位和


例如:0011&0101->0001

您不需要循环,更不用说嵌套循环了。您可以查看
merge
plyr::join_all
match
,等等
train[,'trend'][匹配(test[,'tsmonth'],train[,'month'])
谢谢@rawr我一定会看看这些功能!谢谢@lostballon,将“=”改为“=”真的做到了!