将 for 循环中的元素视为对象,而不是字符串
Posted
技术标签:
【中文标题】将 for 循环中的元素视为对象,而不是字符串【英文标题】:Treat elements in for loop as objects, not strings 【发布时间】:2022-01-12 11:55:11 【问题描述】:我想使用一个将向量中的元素视为对象的 for 循环。
df <- tibble(hallo1 = "test", hallo2.1 = "test", bye1 = "test", bye2.1 = "test")
segmente <- c("hallo", "bye")
for(i in segmente)
assign(i, df[grepl(i, names(df))]) # first step
assign(paste0(i, "_1"), i[!grepl("\\.", names(i))]) # second step
for 循环的第一步按预期工作,并将对象 halo 和 bye 创建为 tibbles。第二步没有按预期工作,因为,我假设,在
i[!grepl("\\.", names(i))]
i 被视为一个字符串,而不是被创建的元素 halo 和 bye,从而产生空字符串,而它们也应该是 tibbles,只包含不带“.”的列。
我如何编写它以便识别 i 是什么,在第一步中创建的对象?
【问题讨论】:
i
没有名字。而且i
不是向量(写i[...]
是什么意思)
在第二步中,“i”应该是两个 tibbles,hallo 和 bye,我想用 [ ... ] 括号对其进行子集。但是代码将它们标识为两个字符串。
试试get(i)[!grepl("\\.", names(get(i)))]
因为i
不是小标题。
这似乎有效。你想提交它作为答案吗?
我不知道这个社区的规则。我可以将其作为答案提交,但这是一个好方法吗?
【参考方案1】:
循环的第一步i
是“你好”并且没有名字。如果您想用名称“hallo”调用 tibble,请使用 get(i)
。
【讨论】:
以上是关于将 for 循环中的元素视为对象,而不是字符串的主要内容,如果未能解决你的问题,请参考以下文章