Использование значений символов в качестве имен объектов - PullRequest
2 голосов
/ 20 февраля 2012

Я хотел бы использовать символы в векторе в качестве имен объектов символов, стремясь получить

first as say "d","e","a","t" etc.

, пробовал этот подход, но явно отсутствует какая-либо функция, применяемая к x [i]

x <- c("first","second","third"..)

for (i in 1:length(x)) {
x[i] <- sample(letters,4)
}

TIA

Ответы [ 2 ]

2 голосов
/ 20 февраля 2012

Функция, которую вы ищете: assign():

> x <- c("first","second","third")
> for (i in 1:length(x)) {
+ assign(x[i], sample(letters,4))
+ }
> 
> ls()
[1] "first"  "i"      "second" "third"  "x"     
> first
[1] "t" "d" "u" "j"
> second
[1] "o" "i" "p" "l"
> third
[1] "w" "v" "r" "n"

В качестве альтернативы вы можете построить эти векторы как различные элементы списка:

> mylist <- list()
> for (i in 1:length(x)) {
+ mylist[[x[i]]] <- sample(letters,4)
+ }
> mylist
$first
[1] "e" "l" "y" "d"

$second
[1] "t" "o" "k" "h"

$third
[1] "g" "x" "p" "b"
1 голос
/ 20 февраля 2012

Вы не говорите, что вы будете делать с этим объектом.Вы можете получить простейшую структуру, используя именованный вектор:

names(x) <- x
x[] <- sample(letters, 4)

Если вы не используете парную скобку на LHS, весь вектор будет заменен, а имена будут потеряны.Теперь вы можете получить доступ к значениям с указанными именами:

> x
 first second  third fourth 
   "w"    "c"    "r"    "x" 
> x["second"]
second 
   "c" 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...