Этот вопрос почти такой же, как у previous question, но он достаточно отличается, что ответы на этот вопрос здесь не сработают. Как и @chase в последнем вопросе, я хочу выписать несколько файлов для каждого раскола в dataframe в следующем формате (custom fasta).написать несколько пользовательских файлов с помощью d_ply
#same df as last question
df <- data.frame(
var1 = sample(1:10, 6, replace = TRUE)
, var2 = sample(LETTERS[1:2], 6, replace = TRUE)
, theday = c(1,1,2,2,3,3)
)
#how I want the data to look
write(paste(">", df$var1,"_", df$var2, "\n", df$theday, sep=""), file="test.txt")
#whole df output looks like this:
#test.txt
>1_A
1
>8_A
1
>4_A
2
>9_A
2
>2_A
3
>1_A
3
Однако, вместо того, чтобы выход из всего dataframe Я хочу, чтобы генерировать отдельные файлы для каждого подмножества данных. Использование d_ply
следующим образом:
d_ply(df, .(theday), function(x) write(paste(">", df$var1,"_", df$var2, "\n", df$theday, sep=""), file=paste(x$theday,".fasta",sep="")))
Я получаю следующее сообщение об ошибке: выходной
Error in file(file, ifelse(append, "a", "w")) :
invalid 'description' argument
In addition: Warning messages:
1: In if (file == "") file <- stdout() else if (substring(file, 1L, :
the condition has length > 1 and only the first element will be used
2: In if (substring(file, 1L, 1L) == "|") { :
the condition has length > 1 and only the first element will be used
Любые предложения о том, как обойти это?
Спасибо, zachcp
быстрый и удивительный. – zach
@zach - Спасибо. Я сразу же поместил вызов 'browser()' в тело анонимной функции (т. Е. 'Function (x) {browser(), write .....}'), что упрощает отладку. Делая это, вы можете осмотреться и изучить каждую часть окружающей среды и вычисления на досуге, и можете быстро увидеть, что пошло не так. –
хороший наконечник! благодаря – zach