2012-02-03 58 views
0

對於我正在編寫的函數,輸出是一個數據幀。但是,我如何將我的數據框的其中一列中的值分配給對象?如何將數據幀中的值轉換爲對象

舉例來說,如果我有2個載體,我cbind成數據幀

>numbers<-c(33, 44, 55, 66) 
>names<-c("A", "B", "C", "D") 
>MYdataframe<-data.frame(cbind(names, numbers)) 

我會得到這樣的:

>MYdataframe 

    names numbers 
1  A  33 
2  B  44 
3  C  55 
4  D  66 

但我怎麼分配的數字(例如33)對象(例如A

+0

你在寫什麼編程語言?請相應地標記問題。 – 2012-02-03 01:13:09

回答

1

如果您真的想將字符值用作名稱和數字值作爲數字矢量的「名稱」,那麼t他會做到這一點:

names(numbers) <- names 
numbers 
# A B C D 
#33 44 55 66 
numbers["A"] 
# A 
# 33 

也許你應該說你真正想要的是什麼,以及選擇適合你的對象不是函數名名(names是一個函數)將幫助我們保持的東西在我們的頭腦整理。

2

它看起來不是一個非常好的想法:你的函數將在全局環境或其父環境中分配變量,而不是返回一些東西。如果你想返回幾個值,你可以把它們放在一個命名列表中,例如,list(A=3.14, B=2.71),或者一個向量,如果它們全都具有相同的類型(如果你可以把它們放入data.frame中)。

此外,在您的示例中,cbind將數字轉換爲因子:我不確定這是否是有意的。

但是,如果你真的堅持,這可以用assign完成。

library(plyr) 
d_ply(MYdataframe, "names", function(u) 
    assign(as.character(u$names[1]), u$numbers, envir=.GlobalEnv) 
) 
+0

+1強烈建議小心。 R沒有嚴格檢查用戶是否會在作業中做某些事情。 – Iterator 2012-02-03 03:39:44