2013-11-28 23 views
0

我正在嘗試創建一個新的數據幀列,並在for循環內爲其賦值。分配錯誤 - 第一個參數無效

具體來說,我有一個數據框名稱的列表,我正在逐一循環這個列表。對於每個名稱,我想爲該數據框創建一個列$location,我想爲其分配一個值。爲了簡單起見,假設我想分配它NA。下面的代碼解釋了我想要做的事情。然而,當我運行它,我收到錯誤Error in assign(get(name)$location, NA) : invalid first argument

names<-c("europe", "africa", "asia") 
# where each of the strings in `names` is the name of an existing data frame object 
# for sake of example, code is provided below to create example data frame objects 

x <- c(2,6,7) 
y <- c(40, 42, 14) 
europe <- data.frame(x,y) 
africa <- data.frame(x,y) 
asia <- data.frame(x,y) 

for (name in names) { 
    assign(get(name)$location, NA) 
} 

我的目標是獲得一個叫我的每個數據幀的位置新列。我不知道如何解決這個問題或者爲什麼會發生。任何幫助將不勝感激。

回答

1

如果你嘗試你的代碼,我得到Error in get(name) : object 'europe' not found
所以我不能添加一個它甚至不是對象的列。 我會嘗試這樣的事情

for (k in length(names)) { 
    location <- c(data1, data2) 
    assign(names[k], location) 
} 

然後轉換成你想要的格式,所以as.data.frame將是

編輯後工作:打一點點左右(和思考),它似乎你不能像這樣改變列值。從幫助頁面Assign a value to a name in an environment.,這不是你正在嘗試實現的,要更改列的值,我將該列的rbind更改爲數據或subs

+0

數據框已經在我的工作區中有價值了......我留下了名字以顯示我正在嘗試做什麼。我將編輯我的問題以添加代碼來創建歐洲數據框。 – whistler

+0

我編輯了我的問題,我希望現在回答這個問題。 – Llopis

-2
for (k in names) { 
    assign(names[k], cbind(names[k], data.frame(location = NA))) 
} 
+2

請向您的代碼提供一些有助於SO用戶的更多信息。 –

相關問題