Chciałem wykonać 6 losowych zestawów danych do praktyki i użył tego kodu:
mypath <- "C:/Users/***"
A <- function(x)(matrix(round(runif(100, 0, 10^5)), nrow = 100))
rownames(x) <- paste0("Gene", 1:100)
Chciałem zaoszczędzić 6 plików o nazwie próbki1-6.txt zawierający każdą inną liczbę losową w jednym Idź, więc próbowałem napisać do pętli:
for (i in 1:6) {write.table(A(x), file = paste0(mypath, paste("Sample", i, "txt", sep = ".")), quote = F, sep ="\t")
}
Problem polega na tym, że ma matrycę w ten sposób w pliku tekstowym:
[,1]
[1,] 87207
[2,] 39773
[3,] 66859
[4,] 43813
Ale chciałem, aby pliki były takie, bez ręcznego prowadzenia kodów za każdym razem:
Gene1 87207
Gene2 39773
Gene3 66859
Gene4 43813
Czy istnieje sposób na umieszczenie rownames(x)
w pętli lub w funkcji?
2 odpowiedzi
Lubię to?
A <- function(x){
z = matrix(round(runif(4, 0, 10^5)), nrow = 4)
rownames(z) <- paste0("Gene", 1:4)
z
}
for (i in 1:3) {
print(A())
}
[,1]
Gene1 95184
Gene2 45595
Gene3 28377
Gene4 34266
[,1]
Gene1 48586
Gene2 68974
Gene3 34566
Gene4 33815
[,1]
Gene1 76261
Gene2 678
Gene3 89750
Gene4 79978
@R. Schifini pokonał mnie do odpowiedzi, więc zrobię kilka komentarzy:
"*"
ma określone znaczenie regex w niektórych strunach; Spróbuj uniknąć go w przykładach zabawek.- Jeśli chcesz, aby Twój kod był bardziej przenośny, nie uruchamiaj / końcowych ciągów, które reprezentują ścieżki do plików / katalogów za pomocą
/
lub\
; Te ograniczniki są specyficzne. - W tej samej żyle, przy użyciu ścieżek {{x0}
- Funkcje, które nie wymagają argumentów, mogą być napisane bez argumentów. Na przykład to działa równie dobrze:
A <- function() { ## notice, no "x"
z = matrix(round(runif(4, 0, 10^5)), nrow = 4)
rownames(z) <- paste0("Gene", 1:4)
z
}
- Definicje funkcji powinny być zamknięte w kręconych klamrach
{}
, a nie nawiasy. - Pętla {X0}} jest nieco trudna do odczytania w sieci, zwłaszcza na urządzeniach mobilnych. Spróbuj zerwać długie linie. Porównaj to:
for (i in 1:6) {write.table(A(x), file = paste0(mypath, paste("Sample", i, "txt", sep = ".")), quote = F, sep ="\t")
}
Do tego:
for (i in 1:6) {
write.table(
A(x),
file = paste0(mypath, paste("Sample", i, "txt", sep = ".")),
quote = F,
sep ="\t"
)
}
Żaden z tego, co powiedziałem, jest ustawiony w kamieniu. Sprawdź te prowadnice stylu: http://adv-r.had.co.nz/style.htmll. https://google.github.io/Styleguide/rguide.html
I gratuluję dobrej pisać pierwsze pytanie. Witamy w tak!
Podobne pytania
Nowe pytania
r
R to darmowy język programowania typu open source i środowisko oprogramowania do obliczeń statystycznych, bioinformatyki, wizualizacji i obliczeń ogólnych. Proszę podać minimalne i powtarzalne przykłady wraz z pożądanymi wynikami. Użyj dput () dla danych i określ wszystkie pakiety inne niż podstawowe za pomocą wywołań biblioteki (). Nie osadzaj obrazów dla danych lub kodu, zamiast tego użyj wciętych bloków kodu. W przypadku pytań związanych ze statystykami należy skorzystać z https://stats.stackexchange.com.