转换For循环以应用功能

时间:2018-11-09 23:09:47

标签: r lapply

我的数据集如下所示: Data 我有一个函数可以帮助我建立属性, att 表示(同年)事件的数量,并且相同的键,并且名字和名字之间存在差异:

N=nrow(data)
for(i in 1:N){
data$att[i] = nrow(
  subset(
    data,
    date[i] == date &
      key[i] == key &
      first_name_main[i] != first_name
  )
)}

如何使用Apply函数转换/改善此循环?

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以使用sapply并基本上将循环体定义为对数据集中的每一行求值的函数:

data$att <- sapply(1:nrow(data), function(x){
                                    nrow(subset(data,date == date[x] & 
                                         key == key[x] &
                                         first_name != first_name_main[x]))
                                 })
相关问题