2017-08-10 149 views
0

我有一個數據框,用excel與庫(readxl)導入。它包含長列的數據,每列都有自己的列標題。現在我需要將特定值存儲在新變量中。我將列標題存儲在矢量「標題」中,並希望從特定行中提取某些值,例如151並將其存儲在新變量中。使用for循環創建來自不同列的變量

我試着用下面的代碼。我是真正的新R和嘗試了很多和失敗...

example <- data.frame(c('N 1','N 2'), c(50, 60), c(70, 80)) 
titles <- c('N 1', 'N 2') 
for (i in titles) { 
    (paste("nkorrigiert",i)) <- as.numeric(example[[paste(i)]][3]) 
} 
dput(head(example)) 

,並得到這個

Fehler中(粘貼( 「nkorrigiert」,I))< - as.numeric(例如[糊(I)]] [3]): ZIEL DER Zuweisung expandiert祖keinem Sprachobjekt

> dput(head(example)) 

structure(list(c..N.1....N.2.. = structure(1:2, .Label = c("N 1", 
"N 2"), class = "factor"), c.50..60. = c(50, 60), c.70..80. = c(70, 
80)), .Names = c("c..N.1....N.2..", "c.50..60.", "c.70..80."), 
row.names = 1:2, class = "data.frame") 

我在做什麼錯?

+0

你能給出你得到的錯誤,並且是一個可重複的例子嗎? –

+0

請在控制檯輸入'dput(head(nDaten))'並將輸出粘貼到您的問題中。你的代碼嚴重錯誤。首先,如果你想用'paste'創建一個對象,你需要使用'assign'。其次,你的索引是錯誤的。 – LAP

+1

請閱讀「R介紹」,特別是關於分配給數據子集的部分:https://cran.r-project.org/doc/manuals/r-release/R-intro.html#Index-vectors –

回答

0

可以使用assign命令

example <- data.frame(c('N 1','N 2'), c(50, 60), c(70, 80)) 
titles <- c('N 1', 'N 2') 
for (i in titles) { 
    assign(paste("nkorrigiert",i), as.numeric(example[[paste(i)]][3])) 
} 
dput(head(example)) 

R不明白,你想創建一個新的變量

+0

謝謝!我已經嘗試使用assign命令。你的例子仍然給我數字空變量。例如>'nkorrigiert N 1' [1]「nkorrigiert N 1」 –

+0

@Sebastian Ortmann我認爲這是因爲'as.numeric(例如[[paste(i)]] [3])'爲空。以這種方式創建它們時列的名稱是不同的,並且索引是錯誤的(每列中只有兩個觀察值) –

0

有了您的幫助和建議@lmo後我能解決這個問題。感謝你們! :D

現在我有我的第一個代碼幾乎運行,耶!隨着福爾循環下這段代碼有可能

as.numeric(assign(paste("nkorrigiert",i), example[3, i])) 

現在我只需要找出如何使用存儲在變量名在for循環中這個值計算:d

一切順利,塞巴斯蒂安