Mein Ziel ist es, eine neue Variable zu erstellen, die der Ausgabe von fun (5) für jede Zeile entspricht, aber gerade jetzt bringt Spaß (1: 5) nicht die gewünschte Ausgabe. Bitte teilen Sie mir mit, wie ich eine neue Funktion erstellen kann, die es mir erlaubt, diese Operation vektorisiert auszuführen, da das Schleifen sehr lange dauern würde.Wie kann ich diese Zeichenfolge erstellen?
würde Ich mag f (1: 5), um einen Vektor von 5 Elementen zu erzeugen, die jeweils ein Ausgangssignal von F gegeben Matching (5) in jeder Reihe entspricht.
Dank
names1 = c("x","y","z")
names2 <- c("hi","hello","bye")
fun <- function(x){paste(names2[which(df[x,names1] == 1)],collapse = " ")}
df <- data.frame(a = c(0,1,2,3,4),x = c(0,0,1,0,1),y = c(0,1,0,0,1),z = c(0,1,0,1,0))
fun(5) = "hi hello"
fun(1:5) = "bye NA NA NA NA NA"
Es ist nicht klar, was willst du? f (1: 5) sollte was zurückgeben? – cryptomanic
Try 'sapply (c (1: 5), fun)' – Zach
Sie sapply verwenden können (1: 5, fun) einen Vektor erhalten [1] "" "Hallo bye" "hallo" "Auf Wiedersehen" "hallo hallo" – cryptomanic