我是R的新手并且不断尝试将其想象为JS,但它绝对不像它。我需要获取第1列中的每个值,并将其与第2列中的计数器部分进行比较。
例如:如果第1列中的第五项是“Subaru”,我需要查看第2列中的第五项是什么。如果在第2列中邮政编码是24153,那么做一件事,如果它是24060做其他事情。
使用JS我只需运行for循环并执行类似
的操作for(i; i < name.length; i++){
if(name[i] == "Subaru" && zipcode[i] == 24153){
do this
} else if (blah blah){
blah blah blah
}
}
但你不能用i来获取R中每列的索引,因为在R for循环中我是值...对吗?
我尝试嵌套for循环,但我在数据库中有7,000多个项目,并且循环通过所有这两个项目是杀手,即使有中断,因为内部循环总是从1开始。
我还尝试将它们放在一个列表中,但由于某些原因,它不起作用。以下是我到目前为止尝试过的两种方法。
names = data$model
zips = data$zipcode
mylist <- list()
mylist[[1]] <- names
mylist[[2]] <- zips
r = 0
while (r <= length(mylist[[1]])) {
print(mylist[[1]][r])
print(mylist[[2]][r])
if(!is.na(mylist[[1]][r])){
if(mylist[[1]][r] == "Subaru" & mylist[[2]][r] == "24153"){
print(mylist[[1]][r])
}
}
}
嵌套for循环
names = data$model
zips = data$zipcode
for (j in names) {
if(!is.na(j)){
for (k in zips) {
if(!is.na(k)){
if(j == "Subaru" & k == "24153"){
print(j)
break
} else if(j == "Subaru" & k == "24060"){
print(j)
break
} else if(j == "Subaru" & k == "24019"){
print(j)
break
}
}
}
}
}
欢迎任何提示或想法。我觉得我看错的方式。
答案 0 :(得分:1)
是的,你的for循环更多是一种java格式。尝试这样的事情:
for(i in 1:nrow(data){
if(name[i] == "Subaru" & zipcode[i] == 24153){
foo
}else if{
bar
}}