Создание серии векторов из вектора - PullRequest
2 голосов
/ 07 апреля 2010

У меня есть простой двух векторный фрейм данных (длина = 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 Ответ

5 голосов
/ 07 апреля 2010

Самый простой / короткий путь - 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))

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...