我需要将一个字符串与多个其他字符串进行比较,并试图通过以下方式进行比较:
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,
但是,我认为它不起作用,因为粘贴()命令返回一个字符串,而不是名称为: ps_2的字符串。
感谢您的时间和努力!
致以亲切的问候,
一位达芬奇伙伴!
发布于 2022-02-07 12:04:44
您需要的函数是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发布于 2022-02-07 11:31:03
您可以在R中使用eval将字符串转换为变量名。您可以找到解决方案这里。
下面是您的代码的样子:
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_thttps://stackoverflow.com/questions/71017745
复制相似问题