用于清洁R中的NA的循环

时间:2014-03-06 09:59:52

标签: r

有没有办法更有效地编写此代码?

for (k in 1:ncol(tr)){
  temp=tr[[k]]
  temp[is.na(temp)] = mean(temp[!is.na(temp)])
  tr[[k]]=temp
}

2 个答案:

答案 0 :(得分:1)

要替换矩阵或数据帧的for循环,apply通常是一个好主意:

apply(tr, 1,  function(temp) {temp[is.na(temp)] <- mean(temp, na.rm=TRUE); temp})

有关apply的更多信息 - 类似函数here

答案 1 :(得分:0)

sapply(tr, function(x) { 
  x[is.na(x)] <- mean(x, na.rm=TRUE)
  return(x) 
})