[问题类型]:
程式咨询(我想用R 做某件事情,但是我不知道要怎么用R 写出来)
效能咨询(我想让R 跑更快)
[软件熟悉度]:
入门(写过其他程式,只是对语法不熟悉)
[问题叙述]:
小弟想请问一下,我想把资料框架中的资料以随机的方式赋值为NA
但总觉得自己的方法效率不高,所以来版上请教大家
有没有比较好的写法
我自己的程式码如下
[程式范例]:
nr <- 10000
nc <- 10
n <- nr*nc
data <- as.data.frame(matrix(rnorm(n),nrow = nr))
#方法1 可行,但总觉得效率不高
abc <- stack(data)
abc$values[sample(n, n/10)] <- NA
data2 <- as.data.frame(matrix(abc$values, nrow = nr))
#方法2 这个比较有瑕疵,不够随机,也无法控制总共有几个NA值
data3 <- cbind.data.frame(
lapply(data, function(x, n = rnorm(1, mean = nr/10, sd = nr^(1/4))){
x[sample(nr,n)] <- NA
return(x)
})
)
sum(is.na(data3))
方法二中
虽然想避免让每一行的NA数都固定
却变得无法控制NA的总数
有点自己绊自己脚的感觉...
至于速度是比第一种快的
[环境叙述]:
[关键字]: