2015-12-18 156 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