Кажется, что нашел ошибку в тидыре.Как использовать tidyr для сбора таблицы данных, удалив столбцы с помощью строки имен столбцов?
У меня есть кусок кода, как это
rm(hello)
a <- function() {
dt <- data.table(`*stat*` = c("mean","max"), time = c(11, 12), val1 = c(1,2), val2 =c(3,4))
hello <- "^(time)$"
dt2 <- dt %>% gather(dimension, value, -matches("\\*stat\\*"), -matches(hello))
}
a()
Но
dt <- data.table(`*stat*` = c("mean","max"), time = c(11, 12), val1 = c(1,2), val2 =c(3,4))
hello <- "^(time)$"
dt2 <- dt %>% gather(dimension, value, -matches("\\*stat\\*"), -matches(hello))
работ.
Единственное отличие состоит в том, что один набор кодов находится в функции, а другой нет!
'var' это имя функции. Возможно ли, что попытка с использованием менее полиморфной строки может преуспеть. (И я не получаю никаких ошибок с вашим кодом). На другой стороне, даже без ошибок, она дает желаемый результат. Я бы использовал '[, grepl (...)]' –
@BondedDust yep. Я обновил вопрос. код работает вне функции, но внутри он не работает. – xiaodai
@KFB отправил (но потом удалил) то, что кажется здесь ответом - ваша функция не печатает какой-либо вывод, потому что вы его не просили. Например, в его нынешнем виде, если вы просто сделали 'print (a())', вы могли бы получить то, что вам нужно. Или добавьте еще одну строку, которая просто 'dt2' в конце вашей функции' a() '. – A5C1D2H2I1M1N2O1R2T1