search <- function(x,max_hp){
count <- 1
result <- matrix(NA, nrow =nrow(x), ncol = ncol(x))
for(i in 1:nrow(x)){
temp_row <- x[i,]
if(temp_row[4] < max_hp){
result[count,] <- temp_row
count <- count + 1
}
}
return(result)
}
我想搜索R中mtcars
数据框的行hp > 240
使用for循环(迭代数据框的每一行)然后,只返回匹配的那一行。但是,我的代码不起作用。我想将每个匹配的行存储在一个空矩阵中。
答案 0 :(得分:1)
我的评论太少,但我有几点要分享。首先,我同意@OttoKässi或@seeellayewhy。我想补充一点,如果你没有在mtcars $ hp中保留你的结果中的任何NA,你需要使用
result <- mtcars[which(mtcars$hp > 240),]
关于替换行,我只需按照上面的命令
result <- rbind(result,newrows)
如果newrows中列的任何属性与结果中的属性不同,R将会抱怨,特别是如果您的任何列是因子数据类型,并且定义的级别有任何差异。