2015-08-16 12 views
11

Próbuję skopiować niektóre dane bezpośrednio z R do schowka, w moim komputerze z systemem Windows. Znalazłem w niektórych witrynach, które działają przy użyciu file = "clipboard". I tak, ale w przypadku bardzo małych zbiorów danych.Jak rozwiązać błąd "bufor schowka jest pełny i utracono wynik" w systemie R działającym w systemie Windows?

Na przykład:

Gdybym skopiować mały zestaw danych (100 OBS), działa płynnie.

df1 <- data.frame(x=runif(100)) 
write.table(df1, file="clipboard", sep="\t", col.names=NA) 

Ale jeśli zwiększenie uwagi do 10000, to się nie powiedzie:

df1 <- data.frame(x=runif(10000)) 
write.table(df1, file="clipboard", sep="\t", col.names=NA) 

Błąd jest: Komunikat

Ostrzeżenie: W .External2 (C_writetable, x, plików, nrow (x), p, r

Dowolny sposób obejścia tego?

Odpowiedz

21

Po wpisaniu nazwy ?connections znajdziesz odpowiedź.

Jest to istotne części:

„Pisząc do schowka, wyjście jest kopiowany do schowka tylko wtedy, gdy połączenie jest zamykane lub zaczerwieniona Istnieje limit 32KB na tekście mają być zapisane do pliku. Można to zwiększyć, używając np. file ("clipboard-128"), aby dać 128Kb. "

Więc, rozwiązanie jest całkiem uczciwego:

df1 <- data.frame(x=runif(10000)) 
write.table(df1, file="clipboard-16384", sep="\t", col.names=NA) 

Należy zauważyć, że liczba Kb to tylko przykład, więc można go zmienić, jak trzeba (kładę 2^14, które powinny być więcej niż wystarczająco dla twojego zestawu danych, ale możesz go jeszcze bardziej zwiększyć Nie wiesz, który jest twardy limit, może pamięć fizyczna?)

+1

Awesome! Natknąłem się na 'file = paste0 (" clipboard- ", 2^20)' aby obsłużyć 1 Gb i zaraz po wklejeniu 500.000 komórek do Excela z R :) –

+0

W moim przypadku z '2^20' excel daje mi błąd 'Microsoft Excel nie może wkleić danych', ale z' 2^19' działa poprawnie. To dziwne, ponieważ błąd dotyczy niewielkich ilości danych, więc wydaje się, że te wywołania "write.table" robią "coś innego". –

Powiązane problemy