我正在尝试在数据找到与预期值不同的值时打印一行。我可以检查一下,但我无法弄清楚如何打印它所找到的行,以及与该特定行关联的变量值。
if(all(Cit1$State1 %in% ValidStates)==TRUE){
cat("Success")} else
{cat("State " State1 "is incorrect.\n")
}
只调出列名(在本例中为State1)是一种SAS技术。在这种情况下,我得到的只是一个错误。在R中是否有相同的效果?
答案 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"))