我如何创建一个带有我正在寻找的 substr 名称的变量?

How can i create a variable with the name of the substr i am looking for?

我正在寻找一种我可以在 R 下执行的宏排序,以从另一个宏创建变量。我想知道在 ZZZ 变量中,字符串是否以某个 3 个第一个字符开头(通过使用 substr 函数)。所以我会用我正在寻找的字符串的名称来命名创建的变量。一些更明确的例子:

我的数据是这样的:

ZZZ
M41
M410
M42
F128

我想创建一个这样的循环:

data$xxx = ifelse(substr(data$ZZZ,1,3)=="xxx",1 ,0)

所以之后的数据看起来像:

ZZZ M41 F12
M41 1 0
M410 1 0
M42 0 0
F128 0 1

因为我必须做一百多次,所以创建一个循环有助于减少程序的大小。

不知道在R下能不能做这种宏

感谢阅读, 血压

1) 假设末尾注释中的输入适用于目标值。

cbind(dat, +sapply(target, `==`, substr(dat$ZZZ, 1, 3)))

给予:

   ZZZ M41 F12
1  M41   1   0
2 M410   1   0
3  M42   0   0
4 F128   0   1

2) 如果要在目标中使用 ZZZ 的每个元素,则使用 target <- unique(substr(dat$ZZZ, 1, 3)) 而不是注释中显示的 target 的值。

3) 如果要在目标中使用 ZZZ 的每个元素,则另一种方法是:

res <- cbind(dat, model.matrix(~ substr(dat$ZZZ, 1, 3) + 0, dat))
names(res) <- sub(".*\)", "", names(res))
res

给予:

   ZZZ F12 M41 M42
1  M41   0   1   0
2 M410   0   1   0
3  M42   0   0   1
4 F128   1   0   0

备注

target <- c("M41", "F12")
dat <- structure(list(ZZZ = c("M41", "M410", "M42", "F128")),
  class = "data.frame", row.names = c(NA, -4L))