在R中,如何用apply函数替换循环?

时间:2017-04-12 07:15:15

标签: r

我正在尝试应用适用于数据帧每一行的操作。以下是代码。

  for(i in 1:nrow(df)){
    df$final[i] <- alignfile[alignfile$Response == df$value[i],]$Aligned
  }

它基本上是从“alignfile”数据框执行vlookup,并在数据框“df”中使用“value”列的成功vlookup创建一个新列。

如何使用apply系列函数替换此操作,以便我可以摆脱使循环变慢的循环。

寻找建议。请随时提供更多说明。

谢谢

1 个答案:

答案 0 :(得分:-1)

你没有提供可重复的例子,所以我的答案是一粒盐, 我认为在这种情况下你根本不需要使用for循环(在大多数情况下使用R)并且都不需要应用函数。我认为这个问题可以通过以下方式用ifelse轻松解决:

df$final <- ifelse(alignfile$Response==df$value, 1, 0)

如果final列的当前单元格中的值等于当前单元格中的值,则会在df数据框的alignfile$Response列中放置一个df$value列。这假定alignfiledf具有相同的行数(从您提供的代码中显示)。