如果任何其他变量名中有x
或a
,我想创建一个新变量A
,其中包含以下示例:
structure(list(A = 10L, a = 20L, abc = 1L), .Names = c("A", "a", "abc"),
class = "data.frame", row.names = c(NA, -1L))
结果应如下所示:
structure(list(A = 10L, a = 20L, abc = 1L, x = 31L), .Names = c("A", "a",
"abc", "x"), class = "data.frame", row.names = c(NA, -1L))
我试图通过以下方式实现这一目标:
names1$x[grep("a" | "A", colnames(names1))]
导致以下错误:
"错误" a" | " A" :只能对数字,逻辑或复杂类型进行操作"
我还尝试仅匹配a
,但这导致NULL
。
答案 0 :(得分:0)
我们可以使用which
和grepl
来获取与" A | a"匹配的索引。要求。
在我的代码中,我添加了元素b
,只是为了表明b
未被总结。我已将您的代码复制而已。
input <- structure(list(A = 10L, a = 20L, abc = 1L, b = 3L), .Names = c("A", "a", "abc", "b"), class = "data.frame", row.names = c(NA, -1L))
> input
A a abc b
1 10 20 1 3
然后我们可以这样做:
input$x <- sum(input[which(grepl("a|A",names(input)))])
> input
A a abc b x
1 10 20 1 3 31
请注意b
未总结的结果。
希望这就是你所追求的!