Wypowiedzi
-
OK, sorry :) A wszystkie dane masz w jednym data.frame-ie? Ponizej przyklad ze sztucznymi danymi.
set.seed(1234)
d <- data.frame(X=sample(0:1, 100, replace=TRUE), cvd=sample(0:1, 100, replace=TRUE))
# X = oznacza grupe pacjentow, z X lub bez
# cvd = czy jest obecny CVD
head(d)
# X cvd
# 1 0 0
# 2 1 1
# 3 1 0
# 4 1 0
# 5 1 0
# 6 1 0
# rozklad liczebnosci
tab <- table(d$X, d$cvd)
tab
# 0 1
# 0 25 30
# 1 23 22
chisq.test(tab)
#
# Pearson's Chi-squared test with Yates' continuity correction
#
# data: tab
# X-squared = 0.1311, df = 1, p-value = 0.7173
-
-
Z helpa prop.test:
## Data from Fleiss (1981), p. 139.
## H0: The null hypothesis is that the four populations from which
## the patients were drawn have the same true proportion of smokers.
## A: The alternative is that this proportion is different in at
## least one of the populations.
smokers <- c( 83, 90, 129, 70 )
patients <- c( 86, 93, 136, 82 )
prop.test(smokers, patients)
wiec w twoim przypadku, jezeli np. w pierwszej grupie (z X) jest 45 mezczyzn a w drugiej (bez X) 70 to test policzyc mozna tak:
prop.test( c(45, 70), c(101, 159))
Pierwszy argument to wektor liczebnosci "sukcesów", drugi argument to liczebnosc grup (lub liczba prób w sensie rozkladu dwumianowego).Michał Bojanowski edytował(a) ten post dnia 15.05.12 o godzinie 14:00
-
zmudna i brudna robota, no własnie w to nie chcialem sie bawic. :) a co jezeli komponenty listy mają nazwy? poza tym, sink lamie wiersze uzywając getOptions("width") wiec jezeli komponenty listy są na tyle długie, ze wektory sa drukowane w wiecej niz jednym wierszu, to tez trzeba to uwzglednic....
Adrianie, Kamilu, nie podążajcie tą drogą ;)
-
jak rozumiem chodzi o to, zeby zapisac i wczytac do/z pliku tekstowego. zapisac/wczytac do/z pliku binarnego mozna save i load.
do pliku tekstowego mozna zapisac na przykład funkcją 'dput' a potem wczytac 'dget'. na pewno nie bawil bym sie w pisanie parsera do eRowego outputu.....
jezeli komponentami listy sa tylko wektory liczb to mozna tez zapisac kazdy komponent jako wiersz cyfr oddzielonych spacjami (nawet 'cat' do tego wystarczy), a potem wczytac 'readLines' i pociąć wartości 'strsplit'.
-
-
-
Szczerze mówiąc mimo długiego opisu nie rozumiem co chcesz osiągnąć...
Przyjmimy, że d1 i d2 to
d1 <- data.frame(x=1:5, a1=5:1, a2=c(1,2,3,5,4))
d2 <- data.frame(y=1:5, a1=c(3,4,5,2,1), a2=c(5,4,2,3,1))
d1
x a1 a2
1 1 5 1
2 2 4 2
3 3 3 3
4 4 2 5
5 5 1 4
d2
y a1 a2
1 1 3 5
2 2 4 4
3 3 5 2
4 4 2 3
5 5 1 1
I co dalej? 'z' ma być wektorem o długości 5? Jak by wyglądał w tym przypadku?
-
Dodałbym jeszcze trzeci problem: automatyczne rozwiązanie się słabo sprawdzi jeżeli ... przekazuje argumenty do funkcji, dajmy na to f(), która z kolei je przekazuje do g(), potem do h() itd. Takich poziomów może być kilka i trudno będzie "zakodować" listę wszystkich możliwych argumentów wobec których wynik match.call będzie można match-ować.
Czwarty problem, związany z powyższym to przekazywanie argumentów przez funkcje generyczne różnym metodom. Przykładowo, argumenty akceptowane przez plot() w ramach ... będą różne w zależności od tego jakim obiektem jest 'x' w wywołaniu plot. Klasa tego obiektu determinuje czy ... zostanie przekazane do plot.default, plot.data.frame, plot.table, plot.function etc....
Wniosek: automatyczna metoda przydaje sie wtedy, gdy masz pełną kontrolę nad tym co się z tymi argumentami dzieje później.
-
Jest kilka możliwości, użyteczność każdej zależy ile argumentów przekazujesz. Ponieważ plot i lm akceptują bardzo dużo dodatkowych argumentów przez ... więc, gdybym miał to robić, to bym zrobił tak za pomocą 'do.call':
f <- function(x, plot.args=NULL, lm.args=NULL)
{
model <- do.call("lm", c( list(x=x), lm.args))
do.call("plot", c(list(x=model$res), plot.args))
}
plot.args i lm.args powinny być listami z argumentami do przekazania do, odpowiednio, plot i lm. Na przykład:
f( x, lm.args=list(model=FALSE), plot.args=list(type="l") )
itd itp etc
EDIT: zle byly nawiasy w funkcji f...Michał Bojanowski edytował(a) ten post dnia 31.01.12 o godzinie 15:03
-
-
-
Polecenie library("pakiet"), bez żadnych dodatkowych argumentów kolejno przeszukuje biblioteki wymienione przez .libPaths() w poszukiwaniu "pakiet"-u. Domyślna ścieżka to pierwsza wartość w wektorze zwracanym przez .libPaths(). Jeżeli więc chcesz dodać ścieżki do "niestandardowych" bibliotek wystarczy na początku pliku Rnw dodać
.libPaths(c("sciezka1", "sciezka2")) # etc.
-
-
Spróbuj w pliku Sweave na początku globalnie ustawić ścieżki do wszystkich potrzebnych bibliotek za pomocą .libPaths(). Wydaje mi się, że jeden z pakietów, który explicite ładujesz za pomocą library() zależy od pakietu 'corpcor', który jest zainstalowany w lokalizacji, która jest widoczna dla R (RStudio?), ale nie jest widoczna, gdy uruchamiasz Sweave()
-
Kamil Bęczyński:
nie rozumiem tego wyniku, odpaliłem wczytywanie dużego pliku i w dalszym ciągu rósł plik tymczasowy na dysku C
ps.
http://www.stat.columbia.edu/~tzheng/tianblog/2007/11/...
Chyba musisz trochę więcej napisać co chcesz zrobić.
Ja w każdym razie nie rozumiem na czym polega problem.Michał Bojanowski edytował(a) ten post dnia 02.12.11 o godzinie 17:16
-
-
-
-