tushaR
tushaR

Reputation: 3116

Applying a function with two arguments using Lapply

I have created a test function, called testFunc which expects two arguments.

testFunc<-function(x,y){
  length(x)
  nrow(y)
}

Now I want to use lappy to apply this function to a list, keeping the y argument fixed.

Consider a test list, testList:

testList<-list(a=c(1,2,3,4,5,5,6),b=c(1,2,4,5,6,7,8))

Can we use lapply to run testFunc on testList$a and testList$b with same value of y?

I tried this call:

lapply(X = testList, FUN = testFunc, someDataFrame)

But I am always getting the length of someDataFrame as the output. Am I missing something obvious.

Upvotes: 1

Views: 7496

Answers (2)

asb
asb

Reputation: 4432

Simplest way, use a named variable:

lapply(X = testList, FUN=testFunc, y=someDataFrame)

Upvotes: 1

vasanthcullen
vasanthcullen

Reputation: 386

Change your function to

testFunc<-function(x,y){
  return(c(length(x), nrow(y)))
}

By default, a R function returns the last evaluated value

Upvotes: 1

Related Questions