R中带for循环的子集

R中带for循环的子集,r,R,我在尝试用一些标准对数据进行子集时遇到了一些麻烦。求你了,如果我能得到一些帮助,那就太好了。 这是我的问题 我有一个从X1到X9变量的数据帧。此变量中存储的数据是双精度的。我需要一个for循环来检查这些变量并返回符合条件的行……比如: 查看X1到X9之间的变量,然后 例如,返回数据,其中(X1,X2,X3)==(5.2,6.3,7.1) 有人能帮我吗 谢谢 对不起,我没有说清楚。 因为我有从X1到X9的变量,我过滤的值可以出现在任何变量中,所以我可以用下面的代码找到行 但我不想手动执行此任务,替

我在尝试用一些标准对数据进行子集时遇到了一些麻烦。求你了,如果我能得到一些帮助,那就太好了。 这是我的问题

我有一个从X1到X9变量的数据帧。此变量中存储的数据是双精度的。我需要一个for循环来检查这些变量并返回符合条件的行……比如:

查看X1到X9之间的变量,然后 例如,返回数据,其中(X1,X2,X3)==(5.2,6.3,7.1)

有人能帮我吗

谢谢

对不起,我没有说清楚。 因为我有从X1到X9的变量,我过滤的值可以出现在任何变量中,所以我可以用下面的代码找到行

但我不想手动执行此任务,替换任何要提取的变量组合。这就是为什么我想在一个for循环中这样做,但无法完成。谢谢


vars最简单的方法是首先转置列,使数据帧变长而不是变宽。您可以使用tidyr::gather函数来实现这一点。之后,您可以过滤数据帧。你不一定需要一个循环

df_filtered <- tidyr::gather(your_df, value = Value, key = ColumnNames, 
               dplyr::starts_with('X')) %>%
               dplyr::filter( ColumnNames == "X1" & Value == 5.2 |
                              ColumnNames == "X2" & Value == 6.3 |
                              ColumnNames == "X3" & Value == 7.1 )
df_已过滤%
dplyr::filter(ColumnNames==“X1”&值==5.2|
ColumnNames==“X2”&值==6.3|
ColumnNames==“X3”&值==7.1)

Hey Marco,您是否可以编辑您的评论,以包含供我们使用的数据样本?您可以使用
head()
dput()
函数打印出我们可以复制并粘贴到控制台中的内容。如果您有较新版本的tidyr,您也可以使用
pivot\u longer()
函数。