Я пытаюсь сгенерировать таблицы из 1 переменной против всех других моих переменных, имена которых сделаны из переменных.
Мой ожидаемый результат будет таким же количеством таблиц, как и число переменных, как если бы я запрашивал таблицы для каждой пары переменных, с именами как
bro2v Other_var_name
bro2vagecat
11 13 15
Less frequent 2018 1827 1630
Twice a day 4276 4782 4194
bro2vsex
Boy Girl
Less frequent 3342 2133
Twice a day 6010 7242
bro2vwealth
Low Mid High
Less frequent 494 1605 3191
Twice a day 843 3350 8588
bro2vQOL
Low Mid High
Less frequent 1947 2576 837
Twice a day 4689 6363 1918
etc...
Я уже подмножество моей базы данных (dbmv), чтобы хранить только те переменные, которые мне нужны, и все они являются факторами.
Я попробовал 2 варианта, но оба получили ошибки:
for(i in dbmv) {
assign(paste("bro2v", i, sep="") ,table(dbmv$bro2,i))
}
работает почти нормально, но циклически проходя через dbmv фактически циклически изменяя значения моих факторов, а не сами векторы, генерируя какие-то странные таблицы.
Эти имена понятны:
bro2v11
i
11 ans 13 ans 15 ans
Less frequent 2018 1827 1630
Twice a day 4276 4782 4194
bro2vBoy
i
Boy Girl
Less frequent 3342 2133
Twice a day 6010 7242
Но это не так просто угадать, поскольку многие из моих векторов имеют значения с именем Low / Mid / High, поэтому я предполагаю, что последний переопределяет другой:
> bro2vLow
i
Low Mid High
Less frequent 1947 2576 837
Twice a day 4689 6363 1918
> bro2vMid
i
Low Mid High
Less frequent 494 1605 3191
Twice a day 843 3350 8588
А некоторые таблицы совершенно невозможно угадать (хороший пример - bro2vNA)
Я попробовал некоторые изменения, такие как использование nrow (dbmv) и т. Д. ... но я не могу найти способ указать на имена факторов.
Моя вторая попытка использовала apply:
apply(dbmv, margin=2, function(x)
{
assign(paste("bro2v", x, sep="") ,table(dbmv$bro2,x))
})
где я получил
Ошибка в match.fun (FUN): отсутствует аргумент "FUN", без значения по умолчанию
сообщение, и я не понимаю, где находится ошибка (я предполагаю, что какая-то простая синтаксическая ошибка).
Не могли бы вы сказать мне, если эти решения хороши для моей проблемы и где я ошибся?
Thx
EDIT
Я попытался сгенерировать таблицы, используя предоставленную функцию, в которую я добавил (после строки печати):
assign(paste0("bro2v", var_name), table(data[[var]], data[[var_name]]))
Я не получаю никакого сообщения об ошибке, но ничего не происходит. Кажется, что это хорошо работает вне функции, поэтому я предполагаю, что что-то нуждается в var_name в paste0, или сама функция assign, которая плохо реагирует в цикле.