读取数据并在无法识别时打印

时间:2015-10-03 17:20:22

标签: r

我正在尝试在数据找到与预期值不同的值时打印一行。我可以检查一下,但我无法弄清楚如何打印它所找到的行,以及与该特定行关联的变量值。

if(all(Cit1$State1 %in% ValidStates)==TRUE){
   cat("Success")} else
   {cat("State " State1 "is incorrect.\n")
   }

只调出列名(在本例中为State1)是一种SAS技术。在这种情况下,我得到的只是一个错误。在R中是否有相同的效果?

2 个答案:

答案 0 :(得分:0)

如果您正在查看Cit1$State1并想要检查该列中的所有值是否都在向量ValidStates内,并打印出Cit1的索引和值,这是不是的,你可以这样做:

for(i in 1:nrow(Cit1)){
  if( !(Cit1$State1[i] %in% ValidStates) ){
    print(Cit1[i,])
  }
}

完整可重复的答案如下。

ValidStates <- c("PA", "NY")
names <- c("Philadelphia", "New York", "Chicago")
State1 <- c("PA", "NY", "CH")
Cit1 <- data.frame(names, State1)

for(i in 1:nrow(Cit1)){
  if( !(Cit1$State1[i] %in% ValidStates) ){
    print(Cit1[i,])
  }
}

答案 1 :(得分:0)

for( i in 1:length(Cit1$State1))
  if(Cit1$State1[i] %in% lists) print("Success") else print(paste("State",Cit1$State1[i], "is wrong"))