2015-12-18 122 views
2
a<-1:10 

anyfunction<-function(data) 

{ 

*********some function*********** 

} 

>anyfunction(data=a) 

输出我想要得到的东西像这样r中获取变量的名称

a 

***value processed by function*** 

我想打印“A”(这里的名下无论函数做“A”可以是任何变量名)。任何方式来获得这在R?

一两件事我想补充,使这个职位明确的是,我想提取变量的名称作为输出数据的行名

出头像

anyfunction(data=a) 
a ****output generate by function****  #here 'a' represents row names of the output 

样品例如

myfunction<-function(data) 
{ 
data=data+1 
return(data) 
} 


a<-1:4 
>myfunction(data=a) 

预期输出

a 2 3 4 5 
+0

只有矩阵和data.frames有行名。我不会再投入更多的时间,直到你清楚地知道你想要的输出是什么。在此之前,我投票结束不清楚,并删除我的答案。 – Roland

+0

@罗兰希望现在你已经清楚了。对于输出的输出形式,无论它是矩阵还是数据帧都无关紧要。我只想得到像上面那样清晰的输出 – learner

+0

所以你想要“行名”和变量名是相同的?你所提供的代码既不是矩阵也不是数据框,所以它不能有rowname。真的很难知道你想达到什么。你最终会提供许多不同名称的变量吗?这是否总是与上面一样,或者可能是“应用”或循环中的一部分? – Elin

回答

2

最后尝试:

用打印方法创建一个S3类。

anyfunction<-function(data){ 
    res <- data + 1 
    attr(res, "var") <- deparse(substitute(data)) 
    class(res) <- c("strange", class(res)) 
    res 
} 

print.strange <- function(x) { 
    cat(attr(x, "var"), x, "\n") 
} 

anyfunction(a) 
# a 2 3 4 5 6 7 8 9 10 11 
+1

'deparse(substitute(data))'会更好吗?试试'anyfunction(1:10)'并比较输出。 – A5C1D2H2I1M1N2O1R2T1

+0

它显示为一条评论。我想把这个'a'作为一个排名。@ Roland – learner

+0

嗯,你为什么不在你的问题中这么说? – Roland