如何更快地在两个向量之间复制数据?

How to copy data between two vectors faster?

我有一个包含 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 是一种解释型语言,因此向量化运算几乎总是比涉及循环的运算更快。

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

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