2014-01-30 5 views
2

Здесь я использую временную шкалу данных как глобальную переменную, используя «< < -« symbol.I ожидал получить значения глобальных изменений значений переменных, влияющих на каждую функцию. Но это не работает.Как получить глобальную переменную в функции r

мой код

vf<-function() 
{ 
    df<<-data.frame(A=c(2),B=c(3)) 
    vk(df) 
    print(df) 
} 

vk<-function(df) 
{ 
    lk<-data.frame(C=c(3),D=c(4)) 
    df<<-cbind(df,lk) 
} 

ничего не произошло после вызова функции.

ожидается выход

>vf() 
A B C D 
2 3 3 4 

, как это исправить?

+0

Вы можете сделать код кратким? – phoxis

+0

есть две функции, присутствующие в этом коде vf и vk.Second функция (vk) вызывается vf. При вызове функции vk значения в кадре данных (L2_table) изменяются. Первая функция vf содержит фрейм данных df.create новый фрейм данных «temp» с 1-м столбцом df как «имя столбца temp» и второй столбец df как его соответствующие значения строк. , когда я вызывал функцию vk, выполняется такая же процедура [вместо df, L2_table vlaues] и значения, сохраненные в одном и том же временном кадре данных. Но каждый раз, когда значение temp превышает запись. Это проблема. Мне нужно добавлять значения каждый раз в временные рамки данных. –

+0

@phoxis. Вы поняли вопрос? –

ответ

1

На самом деле ваш код отлично работает :-) Единственная часть, которую вы пропустите, если вы хотите использовать глобальную переменную, вы должны объявить ее глобально.

Вот мой результат:

> df <- NULL 
> vf <- function() 
{ 
    df <<- data.frame(A=c(2),B=c(3)) 
    vk(df) 
    print(df) 
} 
> vk <- function(df) 
{ 
    lk <- data.frame(C=c(3),D=c(4)) 
    df <<- cbind(df,lk) 
} 
> vf() 
    A B C D 
1 2 3 3 4 

Так что вы пропустите это добавить df <- NULL декларацию


Вы можете сделать то же самое ж/оа глобальной переменной, это немного чище:

vf <- function() 
{ 
    df <- data.frame(A=c(2),B=c(3)) 
    vk(df) # Same as 'return(vk(df))' 
} 

vk <- function(df) 
{ 
    lk <- data.frame(C=c(3),D=c(4)) 
    cbind(df,lk) # Same as 'return(cbind(df,lk))' 
} 

vf() # Returns value, not stored --> printed on the output 
newGlobal <- vf() # Stores the value returned by vf() 

Кстати, если вас интересует R, вы можете найти список великих книг об общих сниппетов и ловушки здесь:

http://xcafebabe.blogspot.hu/2011/09/free-r-book-collection.html

+0

@ rlegendi.if я коротко код. Я не могу получить вывод, что я хочу, чтобы уменьшить код, как он максимальный сейчас. Что мне нужно, это первая температура, b, c и его значение 2 4 3.если я вызываю функцию vk, temp становится colname (a, b, c, d, e, f) и значениями 2 4 3 4 4 3 –

+0

@ rlegendi.I отредактировал code.i нужны глобальные переменные изменения в функции vk будут затронуты в vf –

+0

Я четко отредактировал то, что хочу. Не могли бы вы помочь мне. Как я могу использовать глобальную переменную ?? –

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