从向量创建一系列向量

时间:2010-04-07 04:40:15

标签: 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   ...

我想使用每一行来形成30个单值数值向量,其中带有从mDF$Param1获取的向量名称,因此:

> AuZgFw       
[1] 0.5     

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

1 个答案:

答案 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))