【问题标题】:How to copy data between two vectors faster?如何更快地在两个向量之间复制数据?
【发布时间】:2020-09-23 17:06:47
【问题描述】:

我有一个包含 3 列的数据框 (username, IP_Address, IP_type)。

IP_Address 列有一些 NA 值。

对于IP_Address中的每一行,如果值为NA,我想从username列中复制对应的值。

我正在使用以下代码,但运行速度很慢。我有 230,000 行数据,但一小时后才完成一半。

为什么很慢?我怎样才能更有效地做到这一点?

for (i in 1:length(log_data$IP_type)) {
   if (is.na(log_data$IP_address[i]) == TRUE ){
       log_data$IP_address[i] <- log_data$user_name[i]  
   }
}

【问题讨论】:

    标签: r loops for-loop multiple-columns na


    【解决方案1】:

    R 是一种解释型语言,因此向量化操作几乎总是比涉及循环的操作快。

    找到地址中有 NA 的索引(行),然后只分配那些值:

    na_address <- which(is.na(log_data$IP_address))
    log_data$IP_address[na_address] <- log_data$user_name[na_address]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-16
      • 1970-01-01
      相关资源
      最近更新 更多