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])
>TRUE
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])
>FALSE
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])
> Unerwartetes ','
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])
> FALSE
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]]
______________________________________________
[email protected] mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.