-----Original Message-----
From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-
project.org] On Behalf Of Winfried Moser
Sent: Thursday, January 31, 2013 3:35 PM
To: r-help
Subject: [R] use name (not values!) of a dataframe inside a funktion
Dear Listers,
can anyone help me, please.
Since several days i try to figure out, how to assign values, vectors,
functions etc to variables with dynamically generated names inside of
functions.
Sometimes I succeed, but the success is rather arbitrary, it seems. up
to now i don't fully understand, why things like get, assign, <<- etc
do sometimes work, and sometimes not.
here's one of my daily examples, i am stuck with: Example 1 does work,
but example 2 doesn't?
How kann i tell R, that i want it to expand the string "dfb" to
"dfb[,2]"
inside the function.
In the end i want the function to change the second variable of the
dataframe dfb permanently to factor (not just inside the function).
Thanks in advance!
Winfried
Example 1:
dfa <- data.frame(a=c(1:4),b=c(1:4))
dfa[,2] <- factor(dfa[,2])
is.factor(dfa[,2])
Example 2:
dfb <- data.frame(a=c(1:4),b=c(1:4))
f.fact <- function(x) {x[,2] <<- factor(x[,2])}
f.fact(dfb)
is.factor(dfb[,2])
PS: I tried a whole lot of other things like, ...
I really don't know where to keep on searching.
dfb <- data.frame(a=c(1,2,3,4),b=c(1,2,3,4))
f.fact <- function(x) {get(x)[,2] <<- factor(get(x)[,2])}
f.fact("dfb")
is.factor(dfb[,2])
"Object 'x' nicht gefunden
dfb <- data.frame(a=c(1,2,3,4),b=c(1,2,3,4))
f.fact <- function(x) {get(x[,2]) <<- factor(x[,2])}
f.fact(dfb)
is.factor(dfb[,2])
"Object 'x' nicht gefunden
dfb <- data.frame(a=c(1,2,3,4),b=c(1,2,3,4))
f.fact <- function(x) {get(x)[,2] <<- factor(x[,2])}
f.fact(dfb)
is.factor(dfb[,2])
"Object 'x' nicht gefunden
dfb <- data.frame(a=c(1,2,3,4),b=c(1,2,3,4))
f.fact <- function(x) {assign(x[,2], factor(x[,2]))}
f.fact(dfb)
is.factor(dfb[,2])
Ung?ltiges erstes Argument
dfb <- data.frame(a=c(1,2,3,4),b=c(1,2,3,4))
f.fact <- function(x) {quote(x)[,2], factor(x[,2])}
f.fact(dfb)
is.factor(dfb[,2])
dfb <- data.frame(a=c(1,2,3,4),b=c(1,2,3,4))
f.fact <- function(x) {
name <- paste0(quote(x),"[,2]")
assign(name, factor(x[,2]))}
f.fact(dfb)
is.factor(dfb[,2])
dfb <- data.frame(a=c(1,2,3,4),b=c(1,2,3,4))
f.fact <- function(x) {
name <- paste0(get(x),"[,2]")
assign(name, factor(x[,2]))}
f.fact("dfb")
is.factor(dfb[,2])
Falsche Anzahl von Dimensionen
dfb <- data.frame(a=c(1,2,3,4),b=c(1,2,3,4))
f.fact <- function(x) {
name <- paste0(x,"[,2]")
assign(name, factor(x[,2]))}
f.fact("dfb")
is.factor(dfb[,2])
Falsche Anzahl von Dimensionen
?chz ...
[[alternative HTML version deleted]]