在R中与for循环和突变作斗争



我正试图把我的头绕在R上,我确信我在做一些愚蠢的事情。

我有一个数据框架,其中包括30个品牌(我在一个名为"品牌"的列表中单独列出了它们的名称(和一个我希望插入数据框架的新名称列表(称为"已知品牌"(。

我试图在R数据帧的新列中填充if语句的结果(使用"已知品牌"中的名称(,但这会不断生成错误消息("{"中意外的"{’"(

我不确定哪里出了问题——这是我的代码:

for(i in 1:length(brands)){
plot1a_df <- plot1a_df %>% mutate(known_brands[i] = ifelse(brands[i] >1, 1, 0))
}

用数据说明(假设3 x2列(:

plot1a_df=数据帧(品牌=c(1,0,2(,其他=c(0,0,0((

这个想法是以c(0,0,1(的第三列("known_brands"(结束

使用dplyr:添加逻辑列

library(dplyr)
plot1a_df %>% mutate(is_brand_known = brands %in% brand_list)

iris数据集的另一个例子。

species_list = c('setosa')
iris %>% mutate(is_setosa = Species %in% species_list)
for (i in 1:30){
plot1a_df[, known_cols[i]] <- ifelse(plot1a_df[,brands[i]] >1, 1, 0)
print(plot1a_df[, known_cols[i]])
}

发现我的解决方案可以在没有突变的情况下实现-尽管,我仍然想知道是否有可能在dplyr中组合循环(意识到这里有很多评论,但没有高水平的评论(至少这个傻瓜可以理解!(

最新更新