2014-08-07 3 views
-1

У меня есть вектор имен переменных, которые содержат значения, которые я хочу добавить в фрейм данных.Как добавить вектор имен переменных в кадр данных в R?

Например var_add=c("var1","var2")

Здесь var1 и var2 являются имя переменных, которые я хочу добавить в кадре данных.

Вот код я написал

for (i in var_add){ 
    assign(paste("data_frame$",var_add[i],sep=''),get(var_add[i])) 
} 

Как я могу это сделать?

ответ

5

Это легко с mget. Вот пример.

dat <- data.frame(a = 1:3, b = 2:4) 
# a b 
# 1 1 2 
# 2 2 3 
# 3 3 4 

var1 <- 3:5 
var2 <- 4:6 

varnames <- c("var1", "var2") 

dat[varnames] <- mget(varnames) 

dat 
# a b var1 var2 
# 1 1 2 3 4 
# 2 2 3 4 5 
# 3 3 4 5 6 
+0

Я получаю и error'Error в .Internal (MGET (х, ENVIR, режим, ifnotfound, наследует)): 'ENVIR' отсутствует – Ani

+0

@ user3401208 Что вы попробовали? –

+0

Я скопировал точное решение, которое вы написали, но я получаю сообщение об ошибке. Ошибка в .Internal (mget (x, envir, mode, ifnotfound, inherits)): 'envir' отсутствует. – Ani

1

Использование assign (набора данных @Sven Hohenstein в)

var_add <- c("var1", "var2") 

for(i in var_add){ 
assign('dat', `[[<-`(get('dat'), i, value=get(i))) 
} 
dat 
# a b var1 var2 
#1 1 2 3 4 
#2 2 3 4 5 
#3 3 4 5 6 
+0

Это работает, но вы можете объяснить свое решение, чтобы я мог использовать его в другой проблеме. Более конкретно, что такое '[[<-' (get ('dat') – Ani

+0

@ user3401208. Он присваивает' var_add'variables для набора данных 'dat'. Может быть что-то вроде:' dat [var_add [1]] < - get (var_add [1]); dat [var_add [2]] <- get (var_add [2]) '. Вы можете попробовать прочитать'? Extract', akrun

Смежные вопросы