我有一个关于在R中编写循环的问题

时间:2019-05-15 15:09:19

标签: r

我有两个数据库,一个数据库包含2283行产品信息(USDA),第二个数据库是621种风味类型的产品(Flavor)。我想使用grepl代码在第一个数据集的每一行中识别风味。但是,我不想为每种口味逐一编写代码。因此,我决定编写一个循环。但是,我的循环没有为每个风味检查显示多列结果。相反,它显示的是最后一场比赛的结果。您能帮我解决这个问题吗?

for(i in 2:length(Flavor $ Flavor_names){

              result <-  cbind(USDA, Flavor=grepl(paste0(Flavor_names$FLAVOR.SCENT[i], collapse="|") , USDA$long_name)))

1 个答案:

答案 0 :(得分:0)

在开始这样的循环之前,您需要创建一个空对象来填充循环的所有结果。如result <- NULL。其次,在运行循环时,请像输入result[i]一样索引输出对象。您的循环如下所示:

result <- NULL

for (i in 2:length(Flavor$Flavor_names){
result[i] <-  cbind(USDA, Flavor=grepl(paste0(Flavor_names$FLAVOR.SCENT[i], collapse="|") , USDA$long_name)))
}

现在results的长度为i,在2length(Flavor$Flavor_names)的位置上,您得到了i-th循环的结果。请注意,索引1将是NA,因为您是从2开始循环的。如果循环中包含result[i - 1],则可以避免这种情况。