Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用for循环在数据帧列表中循环_R_Loops - Fatal编程技术网

使用for循环在数据帧列表中循环

使用for循环在数据帧列表中循环,r,loops,R,Loops,我是新来的,经验不是很丰富,我正在试着让R shinyapp的一个项目运作起来 我有一个数据帧列表,其中有一列标记为“性别”,包含all/M/F。我希望根据输入筛选所有数据帧,以便如果输入为男性,则只保留包含M或all的行 list_tables <- list(adverb,adjective,simplenoun,verber,thingnoun, personnoun,name_firstpart,name_secondpart) input$g

我是新来的,经验不是很丰富,我正在试着让R shinyapp的一个项目运作起来

我有一个数据帧列表,其中有一列标记为“性别”,包含all/M/F。我希望根据输入筛选所有数据帧,以便如果输入为男性,则只保留包含M或all的行

list_tables <- list(adverb,adjective,simplenoun,verber,thingnoun, 
                  personnoun,name_firstpart,name_secondpart)
input$gender <- "male

if(input$gender == "male"){
  for (i in list_tables){
    list_tables$i <- i[which((i$Gender=="M")|(i$Gender=="all")),]
  }
} 

list\u tables
i
不是
list\u tables
中的命名条目,因此
list\u tables$i
不起作用。在该循环中,
i
是您试图修改的
data.frame
,但您不更新它

尝试以下任一方法:

for (ind in seq_along(list_tables)) {
  i <- list_tables[[ind]] # feels a little sloppt, but it's compact ...
  list_tables[[ind]] <- i[which((i$Gender=="M")|(i$Gender=="all")),]
}
for(ind按顺序排列(列表)){

i您可以对子集使用
lappy

例如:

list_tables <- replicate(2,iris[c(1,51,101),],F)
# [[1]]
# Sepal.Length Sepal.Width Petal.Length Petal.Width    Species
# 1            5.1         3.5          1.4         0.2     setosa
# 51           7.0         3.2          4.7         1.4 versicolor
# 101          6.3         3.3          6.0         2.5  virginica
# 
# [[2]]
# Sepal.Length Sepal.Width Petal.Length Petal.Width    Species
# 1            5.1         3.5          1.4         0.2     setosa
# 51           7.0         3.2          4.7         1.4 versicolor
# 101          6.3         3.3          6.0         2.5  virginica
在您的情况下,这将是:

lapply(list_tables,subset,Gender %in% c("M","all"))

我想你在第一个
后错过了一个引语?仅供参考,你可以跳过
哪个
呼叫,请将
逻辑
输入
[
即可。这是一种很好的礼节,为阅读你的问题的任何人提供了“结尾”,并提供了一点“谢谢”(以“+名誉”的形式)对于那些花时间帮忙的人。
lapply(list_tables,subset,Species %in% c("setosa","virginica"))
# [[1]]
# Sepal.Length Sepal.Width Petal.Length Petal.Width   Species
# 1            5.1         3.5          1.4         0.2    setosa
# 101          6.3         3.3          6.0         2.5 virginica
# 
# [[2]]
# Sepal.Length Sepal.Width Petal.Length Petal.Width   Species
# 1            5.1         3.5          1.4         0.2    setosa
# 101          6.3         3.3          6.0         2.5 virginica
lapply(list_tables,subset,Gender %in% c("M","all"))