在 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
我需要将一个字符串与多个其他字符串进行比较,并尝试按以下方式进行:
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