【问题标题】:R: looping through a list and adding values to the data frameR:循环遍历列表并向数据框添加值
【发布时间】:2021-10-11 11:51:49
【问题描述】:

我还是 R 新手,我无法在网上找到解决问题的方法。

我想创建一个遍历变量列表的循环,并根据 if 语句在我的数据框中的新列中添加一个值(“1”或“0”)。如果我的列表 (db) 中的变量与 col_1 中的变量相同,则在 col_2 中打印“1”,否则打印“0”。

我试过了:

col1 <- c('aa','c','b','ab','ac','ad')
df <- data.frame(col1)
df$col2 <-NA 

db <- c('aa', 'ab', 'ac', 'ad')

for(i in db) {  
  if(df$col1 == i){
    df$col2 == 1
  } else{
    df$col2 == 0
  }
}

【问题讨论】:

    标签: r list dataframe loops if-statement


    【解决方案1】:

    我们可以使用%in% 创建一个逻辑向量,并使用as.integer+ 将其强制转换为二进制

    df$col2 <- as.integer(df$col1 %in% db)
    

    这些是矢量化操作,与循环相比应该更有效

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-29
      • 2018-03-16
      • 2021-02-08
      • 2018-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-18
      相关资源
      最近更新 更多