2017-08-16 79 views
2

我面临着我的代码需要运行大量时间的问题。我有一个数据框与某些公司的市值,我有第二个数据框与比率。下面有一个可重复的例子如何让循环在R中更高效?

AAPL <- c(500,550,600,540,580) 
MSFT <- c(600,670,630,650,650) 
WDC <- c(50,40,40,45,50) 
mcap<- data.frame (AAPL,MSFT,WDC) 

AAPL.r <- c(3,3.2,4,4.5,5) 
MSFT.r <- c(6,5.8,5.7,6.3,6) 
WDC.r <- c(10,8,8.2,9,9) 
ratio <- data.frame (AAPL.r,MSFT.r,WDC.r)  

我想要做的是NA时,市值超过100。这下更换比我在做什么

for (i in 1:5){ 
for (j in 1:3){ 
    ratio[i,j] <- ifelse (mcap[i,j]<100,NA,ratio[i,j]) 
} 
} 

然而大数据框架需要数小时才能运行。有没有更有效的方法来做到这一点?

预先感谢您

回答

6

你可以简单地做ratio[mcap<100]<-NA

3

另一种可能性是使用功能is.na<-

is.na(ratio) <- mcap < 100