У меня есть набор кадров данных, относящихся ко многим странам, состоящими из 3-х переменных (года, А.И., ДОА). Пример для Зимбабве показано ниже,Динамического изменения типа данных для кадра данных
>str(dframe_Zimbabwe_1955_1970)
'data.frame': 16 obs. of 3 variables:
$ year: chr "1955" "1956" "1957" "1958" ...
$ AI : chr "11.61568161" "11.34114927" "11.23639317" "11.18841409" ...
$ OAD : chr "5.740789488" "5.775882473" "5.800441036" "5.822536579" ...
Я пытаюсь изменить тип данных переменных в кадре данных ниже, так что я могу моделировать линейную аппроксимацию с использованием lm(dframe_Zimbabwe_1955_1970$AI ~ dframe_Zimbabwe_1955_1970$year)
.
>str(dframe_Zimbabwe_1955_1970)
'data.frame': 16 obs. of 3 variables:
$ year: int 1955 1956 1957 1958 ...
$ AI : num 11.61568161 11.34114927 11.23639317 11.18841409 ...
$ OAD : num 5.740789488 5.775882473 5.800441036 5.822536579 ...
Ниже статического кода, способного изменить AI от характера (CHR) в числовом (NUM).
dframe_Zimbabwe_1955_1970$AI <- as.numeric(dframe_Zimbabwe_1955_1970$AI)
Однако, когда я пытался автоматизировать код, как показано ниже, AI все еще остается символьной (CHR)
countries <- c('Zimbabwe', 'Afghanistan', ...)
for (country in countries) {
assign(paste('dframe_',country,'_1955_1970$AI', sep=''), eval(parse(text = paste('as.numeric(dframe_',country,'_1955_1970$AI)', sep=''))))
}
Может вам совет, что я мог бы сделать неправильно?
Спасибо.
Eсть no 'assign (... $ var_name, value)' function. –
Каждый из ваших фреймов данных кажется очень маленьким. Почему бы вам не уложить их в один кадр данных? Тогда вам не нужен этот сложный синтаксис. –
Правая сторона функции assign() создает значения, указанные ниже, eval (parse (text = paste ('as.numeric (dframe _', country, '_ 1955_1970 $ AI)', sep = ''))) [1 ] 11.615682 11.341149 11.236393 11.188414 11.108672 10.973661 10.807027 10.573861 10.326624 10.131940 10.010619 [12] 9,809184 9,676503 9,592671 9,523880 9,455642 –