2017-07-29 24 views
0

我對R世界很陌生。
我試圖從數據框的每列自動創建一個矢量,其名稱是此列標題的名稱,並在需要時調用它。呼叫載體名稱在另一個載體中定義

用於我將使用由Rtutorial

# use mtcars dataframe and reduce it for this example purpose 
    a=mtcars 
    a=mtcars[1:3,2:5] 

# Store Column Names in a vector 
col=colnames(a) 

# use a for loop from 1 to Number of columns to create vectors that: 
# 1. store column values and 
# 2. named as column header 

for (i in 1:length(col)) { 
    assign(col[i],as.character(a[,i])) 
} 

#(So Far So Good), 
# Let'z try to do a simple print of all vector created by the for loop 
for (i in 1:length(col)) { 
    print(col[i]) 
} 

這裏給出的 「mtcars」 數據幀中的示例是我的問題:該載體COL [I的

此第二回路打印的值] 所以基本上爲每次迭代我獲得

  • iter1: 「CYL」
  • iter2: 「DISP」
  • iter3: 「HP」
  • iter4: 「DRAT」

但我想得不是[ I]價值山坳載體。 我想什麼已經是包含稱爲COL [I]的矢量內的值 使得第二環路後我會騙獲得:

  • iter1:「6」「6」「4 「
  • iter2: 」160「 」160「 」108「
  • iter3: 」110「 」110「 」93「
  • iter4: 」3.9「, 」3.9「, 」3.85「
+1

這樣做絕對沒有正當理由。它使得你打算做的事情越來越困難。 – Roland

+0

我知道這似乎很複雜,但正確的知道是我想要解決我真正的問題的最快方式。可能會有很多不這樣做的理由,以及將有更多更好的解決方案來解決我的實際問題,但現在我知道這是我想出的。 – Francesco

回答

1

使用get功能離子。

for (i in 1:length(col)) { 
    print(get(col[i])) 
} 
#[1] "6" "6" "4" 
#[1] "160" "160" "108" 
#[1] "110" "110" "93" 
#[1] "3.9" "3.9" "3.85" 
2

你需要的是get

for (i in 1:length(col)) { 
    print(get(col[i])) 
} 

沒有它,你要打印的值個向量col的,而不是存儲在他們的名字是那些變量。