【发布时间】:2018-11-13 22:09:13
【问题描述】:
我正在尝试创建一个从 1 到 14 的循环。此循环中的每个整数都将添加到新创建的数据框名称的末尾。然后,它应该根据数字和文本的连接来搜索现有数据框中的列。我一直在寻找几个小时,但找不到解决方案。
我的意思是:
while (i <= 14) {
"newDF" + i <- oldDf %>%
filter(str_detect(ColumnName, "TEXT" + i)
}
新的数据框应该如下所示:
新DF1,新DF2...新DF14
它们应该基于连接的字符串(text + i)创建:
text1,text2..text14
我的第一个挑战是基于文本和 i 的连接创建一个新的数据框。我尝试使用 str_c 命令和 str_glue 命令,但收到以下错误消息。
Error in str_c("newDF", i)) <- oldDF:
target of assignment expands to non-language object
Error in str_glue("newDF{i}") <- oldDF:
target of assignment expands to non-language object
【问题讨论】:
-
当您需要循环时,当您不知道循环将运行多少次时使用
while循环 - 您需要进行测试以确定何时停止。如果您事先知道要循环多少次,请使用for循环。在这种情况下,您知道循环从 1 变为 14,因此请使用for (i in 1:14)。 -
但也不要这样做。顺序命名的变量很难使用(正如您所发现的那样)。相反,将它们全部放在一个列表中。 Read my answer here about using lists of data frames。这要容易得多。
-
@Gregor 谢谢 - 很好的回答
标签: r string dataframe full-text-search concatenation