用R完成初学者我看了很多但我找不到我需要的东西。
我有一个for循环,它迭代一个值列表。我想在for循环中放置一个if循环,如下所示:
for (i in list){
if (i>200){
print (i)
}
}
返回以下警告:
“警告讯息: 在if(i> 200){: 条件的长度> 1,只使用第一个元素“
果然,if循环只检查列表中第一个元素的条件。
我知道这可能是因为for循环不会返回R中的任何内容,但是解决方法是什么。我该如何解决这个问题?
谢谢你的帮助。
答案 0 :(得分:0)
for (i in 1:20){
if (i>10) print(i)
}
通常,条件为真或假:1或0.因此条件必须始终为长度1.
答案 1 :(得分:0)
您的问题不够详细,无法准确了解您的目标。
通常,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
请告诉我这是否是你想要的