Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
匹配第一列R后从第二列中提取值_R_Loops_Conditional - Fatal编程技术网

匹配第一列R后从第二列中提取值

匹配第一列R后从第二列中提取值,r,loops,conditional,R,Loops,Conditional,我试图循环两个数据帧,并根据匹配的名称,从第二个数据帧到第一个数据帧中绘制一个值。现在我的代码看起来像 for (n in 1:180){ for (m in 1:180){ if (league2008[n,1]==league2009[m,1]){ league2008[n,23]=league2009[m,23] league2008[n,30]=league2009[m,30] } } }

我试图循环两个数据帧,并根据匹配的名称,从第二个数据帧到第一个数据帧中绘制一个值。现在我的代码看起来像

for (n in 1:180){
    for (m in 1:180){
        if (league2008[n,1]==league2009[m,1]){
            league2008[n,23]=league2009[m,23]
            league2008[n,30]=league2009[m,30]
        }
    }
}
所以现在,如果第1列中的名称匹配,我将该名称的第23列和第30列的值从2009年带到2008年。这是可行的,但是有没有一种方法可以更快地完成这个循环,有没有一种方法可以让我命名这些列而不是仅仅给出它们的索引?我希望使我的代码更加健壮,并在将来更改列


谢谢

我认为这应该很好:

n <- 1:180
m <- 1:180
ind <- expand.grid(n,m)
con <- league2008[ind[,1],1] == league2009[ind[,2],1]
league2008[ind[con,1],23] <- league2009[ind[con,2],23]
league2008[ind[con,1],30] <- league2009[ind[con,2],30]

n我认为这应该很好:

n <- 1:180
m <- 1:180
ind <- expand.grid(n,m)
con <- league2008[ind[,1],1] == league2009[ind[,2],1]
league2008[ind[con,1],23] <- league2009[ind[con,2],23]
league2008[ind[con,1],30] <- league2009[ind[con,2],30]

n谢谢!如果我在几年的配对中这样做,我是否需要重新初始化网格,或者我是否可以简单地从您的条件步骤再次开始?m和n每年都是相同的数字,所以网格永远不需要改变大小,我想没问题。如果
m
n
始终保持不变,则它们可能的组合不会改变,因此
ind
也不需要改变。如果这回答了您的所有问题,请不要忘记按我答案旁边的复选标记以结束问题。谢谢!如果我在几年的配对中这样做,我是否需要重新初始化网格,或者我是否可以简单地从您的条件步骤再次开始?m和n每年都是相同的数字,所以网格永远不需要改变大小,我想没问题。如果
m
n
始终保持不变,则它们可能的组合不会改变,因此
ind
也不需要改变。如果这回答了您的所有问题,请不要忘记按下我答案旁边的复选标记以关闭问题。