我有一个简单的两个矢量数据帧(长度= 30),看起来像这样:
> mDF
Param1 w.IL.L
1 AuZgFw 0.5
2 AuZfFw 2
3 AuZgVw 74.3
4 AuZfVw 20.52
5 AuTgIL 80.9
6 AuTfIL 193.3
7 AuCgFL 0.2
8 ...
我想使用每一行来形成30个单值数值向量,其中带有从mDF$Param1
获取的向量名称,因此:
> AuZgFw
[1] 0.5
等
我尝试过融化和铸造,但我怀疑可能有更简单的方法吗?
答案 0 :(得分:5)
最简单/最短的方法是apply
assign
对行:
mDF <- read.table(textConnection("
Param1 w.IL.L
1 AuZgFw 0.5
2 AuZfFw 2
3 AuZgVw 74.3
4 AuZfVw 20.52
5 AuTgIL 80.9
6 AuTfIL 193.3
7 AuCgFL 0.2
"),header=T,stringsAsFactors=F)
invisible(apply(mDF,1,function(x)assign(x[[1]],as.numeric(x[[2]]),envir = .GlobalEnv)))
这涉及将数据帧的第二列转换为字符串和从字符串转换。 invisible
仅用于抑制apply
的输出
编辑:你也可以使用mapply
来避免对字符串进行纠缠:
invisible(mapply(function(x,y)assign(x,y,envir=.GlobalEnv),mDF$Param1,mDF$w.IL.L))