R 从函数参数中减去传递的对象名

R 从函数参数中减去传递的对象名,r,R,我有一个关于substr的问题,但我不知道这是否是我需要使用的。我已经将这个例子简化到最小,所以我只需要在函数中复制它的结果并循环它 假设您有一个日期框(“House”),但在函数内部,您必须将其作为输入引用。因为将有许多数据帧通过它,所以不能专门称之为“房子” 所以,数据帧“房子”。在函数内部,获取输入的名称。然后,我想将数据帧名称的前三个字母与“Hou”进行比较。如果为真,它将返回一些值,如果为假,它将返回另一个值 我试过了,但我想不出来。我不知道是否有人能帮助我,否则我的问题将永远陷入一个

我有一个关于substr的问题,但我不知道这是否是我需要使用的。我已经将这个例子简化到最小,所以我只需要在函数中复制它的结果并循环它

假设您有一个日期框(“House”),但在函数内部,您必须将其作为输入引用。因为将有许多数据帧通过它,所以不能专门称之为“房子”

所以,数据帧“房子”。在函数内部,获取输入的名称。然后,我想将数据帧名称的前三个字母与“Hou”进行比较。如果为真,它将返回一些值,如果为假,它将返回另一个值

我试过了,但我想不出来。我不知道是否有人能帮助我,否则我的问题将永远陷入一个黑点

任何帮助都是有用的。我需要answeer是
[1]TRUE

House <- data.frame("SN" = 1:2, "Country" = c("Spain","France"), "Name" = c("John","Dora"))

input <- House

((substr("input", start=1, stop=3) == "Hou"))

[1] FALSE

Is there any way, to make this TRUE? I always get FALSE, as what it´s doing is compare "inp" with "Hou". 

If I take the quotes out,

House <- data.frame("SN" = 1:2, "Country" = c("Spain","France"), "Name" = c("John","Dora"))

input <- House

(substr(input, start=1, stop=3) == "Hou"))

[1] FALSE FALSE FALSE

House将数据框作为
input
传递,并将字符串作为
word
传递

foo <- function(input, word = "Hou") {
    name <- as.character(substitute(input))
    res <- substr(name, 1, 3) == word
    return(res)
}

House <- Duck <- data.frame()
foo(House)
[1] TRUE
foo(Duck)
[1] FALSE

函数内部的
foo?标准技巧是
deparse(替换()


fun你应该在“”中使用House作为字符串,而不使用“”输入嗨,想象一下,在函数之前,我们调用数据帧输入,我不想再浪费你的时间了,但我需要的正是它。唯一的一件事,如果在这个例子中,“房子”在引号里,它只是房子这个词。但我拥有的是数据框房子。如果你能拿出一个称之为输入@JM_44的数据框,没问题,但是你能更详细地解释一下你的问题吗?我有很多数据框,叫做House1,House2,House3。。。还有1号街,2号街,3号街。。。对于每个输入,都有一个创建绘图的内部函数。我为每个数据帧绘制了一个图。我给情节标题起了一个通用的名字,让我们称之为nametitle。对于每个地块,如果是房屋数据框,我想给出第一行和第二列的标题。如果是街道数据框,我希望标题是第一行和第三列。所以我创建了一个函数,如下所示,如果((substr(“input”,start=1,stop=3)=“Hou”){nametile,但是使用这个函数,我总是得到输入的第1行第3列的nametile,因为我没有返回“Hou”或“Str”将其与==“Hou”进行比较,我会返回“inp”,如果我从“input”中取出引号,它就不会==到“Hou”,我得到的是一个带有false的向量,因为它将数据帧中的每个项目与“Hou”进行比较,而不是标题。
foo <- function(input, word = "Hou") {
    name <- as.character(substitute(input))
    res <- substr(name, 1, 3) == word
    if (res) {
        nametitle <- input[1, 2] 
    } else {
        nametitle <- input[1, 3]
    }
    return(nametitle) 
}
fun <- function(input){
    inpName <- deparse(substitute(input))
    substr(inpName, start=1, stop=3) == "Hou"
}

fun(House)
#[1] TRUE