在 for 循环中使用粘贴和求和

Using paste and sum inside a for-loop

我需要将一个字符串与多个其他字符串进行比较,并尝试按以下方式进行:

empty = character(0)
ps_2 = c("h2","h3")
ps_3 = c("h3", "h4")
visible = ("h2")

i = 2
ps_t = empty
ps_t <- append(ps_t, sum(visible %in% paste("ps_", i, sep="")))

打算写一个循环而不是 i = 2,以便循环通过 ps_2、ps_3、...

但是我认为它不起作用,因为 paste() 命令 returns 一个字符串而不是名称为 ps_2 的字符串。 我该如何解决这个问题?

感谢您付出的时间和精力!

亲切的问候,

一个数据狂热者!

您可以在 R 中使用 eval 将字符串转换为变量名。您可以找到解决方案 here.

您的代码如下所示:

ps_t <- c(0, (sum(visible %in% eval(parse(text = paste("ps_", i, sep=""))))))

它会给你一个数字向量。

您可以使用 get.

ps_t <- append(0, sum(visible %in% get(paste("ps_", i, sep = ""))))
ps_t

你需要的函数是get(),获取对象的值

ps_t <- ps_t = NULL

sapply(2:3, function(i) append(ps_t, sum(visible %in% get(paste0("ps_", i)))))

或者简单地说:

sapply(2:3, function(i) sum(visible %in% get(paste0("ps_", i))))

输出

[1] 1 0