从向量创建一系列向量

use*_*608 2 r vector dataframe

我有一个简单的两个矢量数据帧(长度= 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   ...
Run Code Online (Sandbox Code Playgroud)

我想使用每一行来形成30个单值数值向量,其中包含从中获取的向量的名称mDF$Param1,以便:

> AuZgFw       
[1] 0.5     
Run Code Online (Sandbox Code Playgroud)

等等

我尝试过融化和铸造,但我怀疑可能有更简单的方法吗?

Leo*_*yev 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)))
Run Code Online (Sandbox Code Playgroud)

这涉及将数据帧的第二列转换为字符串和从字符串转换. invisible只有抑制输出apply.
编辑:您还可以使用mapply以避免与字符串的纠缠:

invisible(mapply(function(x,y)assign(x,y,envir=.GlobalEnv),mDF$Param1,mDF$w.IL.L))