【问题标题】:R: loop: How to create a column with mostly NA and value for some rows in a data.frame?R:循环:如何为data.frame中的某些行创建一个主要包含NA和值的列?
【发布时间】:2015-12-31 18:51:07
【问题描述】:

我有一些应用家庭和 plyr 的经验。这个循环是否有更好的(非循环)解决方案(需要一段时间,因为 data.frame 有 200k 行)。

for (i in 1:nrow(all)) 
 if (all$pmcCnt[i] > 0) 
  all[i,'linkPMC'] = sprintf('http://www.ncbi.nlm.nih.gov/pmc/?term=%s[uid]',str_replace_all(all$pmcpmids[i],'\\|','+'))

它的作用是:对于一列中具有 >0 值的行,新列将填充一个 URL。对于 0 行,URL 留空。

我之前的替代代码生成了太多空链接,因此 >0 条件。

all$link1=sprintf('http://www.ncbi.nlm.nih.gov/pubmed/?term=%s[uid]',str_replace_all(all$pmidsRaw,'\\|',','))    

同样,我们的目标是让它超快。 (现在需要 50 多秒)和/或更多“R-ish”,不循环。 (如果可能/明智)

【问题讨论】:

    标签: r apply


    【解决方案1】:
    all$linkPMC <- ifelse(all$pmcCnt > 0, 
                          sprintf('http://www.ncbi.nlm.nih.gov/pmc/?term=%s[uid]', str_replace_all(all$pmcpmids, '\\|','+')), 
                          NA)
    

    或将NA 替换为“”(空字符串)。

    【讨论】:

      猜你喜欢
      • 2012-10-12
      • 2022-01-22
      • 2020-08-12
      • 2020-09-22
      • 2018-01-24
      • 2022-07-15
      • 1970-01-01
      • 1970-01-01
      • 2020-07-10
      相关资源
      最近更新 更多