2017-08-10 63 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

一切顺利,塞巴斯蒂安