Hi Bernardo, I don't think that your function is doing anything like you expect it to do:
test <- data.frame(var1=c("a","b","c"),var2=c("d","e","f")) test var1 var2 1 a d 2 b e 3 c f You have a data frame with two columns, the first thing you do is extract the first value in the first column: test[1,1] [1] a Levels: a b c Okay, looks like the first column is a factor. The next operation, strsplit, requires a character argument strsplit(test[1,1]," ") Error in strsplit(test[1, 1], " ") : non-character argument Not what you have. Go back to the beginning and create the data frame without the values becoming factors: test <- data.frame(var1=c("a","b","c"),var2=c("d","e","f"), stringsAsFactors=FALSE) > strsplit(test[1,1]," ") [[1]] [1] "a" Now strsplit doesn't complain, but just gives you back the first value. As it is only of length 1, the conditional fails and the function returns the initial data frame. Try as I might, I cannot work out what you are trying to do, so I will await further information. Jim On Mon, Nov 14, 2016 at 9:09 AM, Bernardo Doré <berd...@gmail.com> wrote: > Hello list, > > my first post but I've been using this list as a help source for a while. > Couldn't live without it. > > I am writing a function that takes a dataframe as an argument and in the > end I intend to assign the result of some computation back to the > dataframe. This is what I have so far: > > myFunction <- function(x){ > y <- x[1,1] > z <- strsplit(as.character(y), split = " ") > if(length(z[[1]] > 1)){ > predictedWord <- z[[1]][length(z[[1]])] > z <- z[[1]][-c(length(z[[1]]))] > z <- paste(z, collapse = " ") > } > x[1,1] <- z > } > > And lets say I create my dataframe like this: > test <- data.frame(var1=c("a","b","c"),var2=c("d","e","f")) > > and then call > myFunction(test) > > The problem is when I assign x[1,1] to y in the first operation inside the > function, x becomes a dataframe inside the function scope and loses the > reference to the dataframe "test" passed as argument. In the end when I > assign z to what should be row 1 and column 1 of the "test" dataframe, it > assigns to x inside the function scope and no modification is made on > "test". > > I hope the problem statement is clear. > > Thank you, > > Bernardo Doré > > [[alternative HTML version deleted]] > > ______________________________________________ > R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see > 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. ______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see 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.