if循环在for循环中,该循环在R中的列表上迭代?

if循环在for循环中,该循环在R中的列表上迭代?,r,list,R,List,完全是R的初学者,我已经找了很多地方,但是我找不到我需要的东西 我有一个for循环,它迭代一系列值。我想在for循环中加入一个if循环,如下所示: for (i in list){ if (i>200){ print (i) } } 这将返回以下警告: “警告信息: 如果(i>200){: 该条件的长度大于1,且仅使用第一个元素“ 果不其然,if循环只检查列表中第一个元素的条件 我知道这可能是因为for循环在R中不返回任何内容,但解

完全是R的初学者,我已经找了很多地方,但是我找不到我需要的东西

我有一个for循环,它迭代一系列值。我想在for循环中加入一个if循环,如下所示:

    for (i in list){
    if (i>200){
        print (i)
        }
    }
这将返回以下警告:

“警告信息: 如果(i>200){: 该条件的长度大于1,且仅使用第一个元素“

果不其然,if循环只检查列表中第一个元素的条件

我知道这可能是因为for循环在R中不返回任何内容,但解决方法是什么。我如何解决这个问题

谢谢你的帮助

for (i in 1:20){
     if (i>10) print(i)
    }

一般来说,条件可以是真的,也可以是假的:1或0。因此,条件的长度必须始终为1。

您的问题不够详细,无法准确地知道您想要做什么

一般来说,
apply
系列在处理向量时非常有用:请参阅
?apply

如果您有一个数字向量列表,您只想从中保留
>200
的向量元素,则可以使用以下代码:

# list of numeric vectors
my_list <- list(a = c(201, 199, 202),
                b = c(9, 203, 188),
                c = c(203, 210, 7))


# using the apply family to e.g. calculate a mean
sapply(my_list, mean)
#        a        b        c 
# 200.6667 133.3333 140.0000 

# same thing but now with explicitely naming the vector i
# using an anonymous function
sapply(my_list, function(i) mean(i))
#        a        b        c 
# 200.6667 133.3333 140.0000 

# using a anonymous function to select in the vector what we want
sapply(my_list, function(i){ i[i>200] })
# $a
# [1] 201 202
# 
# $b
# [1] 203
# 
# $c
# [1] 203 210
#数字向量列表
我的清单(200]})
#一美元
# [1] 201 202
# 
#b美元
# [1] 203
# 
#$c
# [1] 203 210

请告诉我这是否是您想要的

我不明白我做错了什么。对我来说,if语句只是比较列表中的第一个条目。如果第一个条目大于200,则打印整个列表,否则什么也不打印。问题是我们不知道
list
中有什么。如果
list
是一个向量列表,则
i
是一个向量,
i>200
将在将向量与单个数字进行比较时返回警告消息。For循环通过索引运行。使用索引获取对象中的每个元素。如果要查看列表中的第一个元素,则可以将其子集<代码>如果(列表[[1]][1]>200)打印(列表[[1]])谢谢。我意识到我的列表包含向量。你的帮助帮我解决了这个问题。我尝试过升级投票,但由于我的帐户是全新的,我不能。您能提供您在
列表中拥有的内容吗?警告基本上告诉您,如果
i
中的向量大于1,则只使用第一个元素。这基本上意味着
列表的结构存在问题。您可以使用类似于
L200)print(i)
的方法轻松地重现此结果,将
str(list)
的输出添加到您的问题中应该会有所帮助。