2017-12-01 2 views
0

Ein wenig verwirrt, wie ich versuche, die Ergebnisse, die ich will, zu erreichen.für Schleife und eine Funktion kombiniert, um eine Formel und dann eine Regression zu berechnen

Ich habe ein Umfeld, in R, die df[i]

Sogenannte von 5 data.frames besteht;

col1 
col2 
col3 
col4 
col5 

Insgesamt habe ich 25 Spalten über 5 Datenrahmen

df1 
df2 
df3 
df4 
df5 

Innerhalb dieser df´s Ich habe 5 Spalten col[j] genannt (5 df x 5 col).

Ich habe auch eine statische Variable R genannt welches ein Vektor von Zahlen ist

I für jede Spalte jeder Datenrahmen eine Grundformel unter Verwendung einer Funktion/Schleife zu berechnen versuche. Die Formel für Spalte 1 von df1 wäre:

Y = df1$col1 - R 

Ich versuche, diese und für jeden colum[j:5] in df[i:5] und speichern sie in einem neuen data.frame

j <- 1:5 
i <- 1:5 
fun <- function(x){ 
    for(i in 1:col[j](df[i])){ 
    Y[j] <- col[j] - R 
    } 
} 

EDIT wiederholen zu berechnen: Hinzugefügt Kommentar unten zur besseren Ablesbarkeit.

Y1a = df1$col1 - R 
Y2a = df1$col2 - R 
Y3a = df1$col3 - R 
..... 

..... 
Y1b = df2$col1 - R 
Y2b = df2$col2 - R 
Y3b = df2$col3 - R 
..... etc 
+0

Ich verstehe nicht ganz, was Sie tun möchten. Ein guter Anfang wäre 'dplyr :: mutate_each (df1, Funktion (x) x - R)' –

+0

Okay, also möchte ich die Formel 'Y = df [i] $ col [j] - R 'über alle berechnen 5 Datenrahmen und alle Spalten zum Beispiel; 'Y1a = df1 $ col1 - R' | 'Y2a = df1 $ col2 - R '| 'Y3a = df1 $ col3 - R' ..... und ....' Y1b = df2 $ col1 - R' | 'Y2b = df2 $ col2 - R '| 'Y3b = df2 $ col3' .... usw. – user113156

+1

Willst du wirklich eine for-Schleife oder hast du das bisher probiert? Was @ Flo.P vorgeschlagen hat, ist eine der Möglichkeiten, dies zu tun, aber Sie müssen diesen Prozess auf jeden Ihrer Datensätze anwenden. – AntoniosK

Antwort

3
# Put your data in a list:  
dflist = mget(paste0("df", 1:5)) 

# Apply your function to every data frame 
ylist = lapply(dflist, function(x) x - R) 

# Name the resulting columns y1:y5 
ylist = lapply(ylist, setNames, paste0("y", 1:5)) 

Werfen Sie einen Blick auf How to make a list of data frames für Beispiele und Diskussion darüber, warum eine bessere Listen verwendet.

+0

Danke, funktioniert super! – user113156

1

tidyverse Version

dplyr::mutate_all eine fonction jeder Spalte eines data.frame gelten.

So möchte ich das tun:

all_df <- list(df1, df2, df3, df4, df5) 
map(all_df, function(x) mutate_all(x, function(y) y - R))  

Es sollte Ihnen eine Liste von Länge 5. Jede df Ihre gewünschte Statistik enthält.

+0

Danke, das hat auch bei mir funktioniert – user113156

Verwandte Themen