2

我有一个简单的两个向量数据框(长度 = 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     

ETC

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

4

1 回答 1

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

于 2010-04-07T08:00:45.790 回答