k<-21;
for(i in 5:k)
{
pharma[,i][pharma[,i]=="#N/A"]<- NA
pharma[,i][pharma[,i]=="NM"]<- NA
num<-sum(is.na(pharma[,i]))
n=1-num/length(pharma[,i])
if(n<0.8) {
rm(pharma[,i])
Else n=0
}
}
基本上试图用NA代替列并删除那些NA太多的列。for循环中的错误
k<-21;
for(i in 5:k)
{
pharma[,i][pharma[,i]=="#N/A"]<- NA
pharma[,i][pharma[,i]=="NM"]<- NA
num<-sum(is.na(pharma[,i]))
n=1-num/length(pharma[,i])
if(n<0.8) {
rm(pharma[,i])
Else n=0
}
}
基本上试图用NA代替列并删除那些NA太多的列。for循环中的错误
您没有告诉我们代码创建的错误。但有几点意见:
Else
不等于else
和Else
不正确else
之前的if
语句。感谢Paul,找到了一条路,下面是新代码:for我在c(5:18)){ pharma [,i] [pharma [,i] ==“#N/A”] < - NA pharma [,i] [pharma [,i] ==“NM如果(n> 0.95)pharma1 <-merge(is.na(pharma [,i])) n <-1-num/length(pharma [,i]) m,pharma [,c(1,4,i)],all = TRUE) m <-pharma1 } – 2013-04-10 11:14:37
如果这回答你的问题,我将它作为一个单独的答案添加它,描述你做什么来解决这种情况,张贴代码,并接受它作为正确的答案。 – 2013-04-10 11:22:59
你可能想东西像
## extract the columns to manipulate
pp <- pharma[,5:21]
## set relevant values to NA
pp <- lapply(pp,function(x) x[x %in% c("#N/A","NM")] <- NA)
## estimate fraction NA and test
badcols <- colMeans(is.na(pp))>0.2
## remove bad columns
pp <- pp[,!badcols]
## put the manipulated stuff back together with the original structure
pharma <- cbind(pharma[,1:4],pp)
,但很难确切地告诉不重复的例子。
您可以扩展问题来解释错误发生的位置吗? – James 2013-04-05 12:16:20
阅读它! http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example – 2013-04-05 13:06:31
downvoting由于忽视...将upvote如果改进。 – 2013-04-08 19:59:03