Как преобразовать этот простой код в функцию, чтобы получить общее количество наблюдений каждого кадра данных в списке? - PullRequest
0 голосов
/ 07 июня 2019

Вот пример списка dfs.

var1 <- rnorm(10)
var2 <- rnorm(10)
  df1 <-data.frame(var1,var2)
var1 <- rnorm(14)
var2 <- rnorm(14)
  df2 <-data.frame(var1,var2)
var1 <- rnorm(17)
var2 <- rnorm(17)
  df3 <-data.frame(var1,var2)
df.list <- list(df1, df2, df3)

Мой расчет:

n <- table(var1, var2)
N <- length(df1$var1)  # !!!! df1?
test1 <- N * n
test2 <- n/N
list <-list(test1, test2)

Теперь я хочу превратить его в функцию для одновременного применения этой функции в списке dfs.

 fun <- function(var1, var2){
    n <- table(var1, var2)
    N <- length(df1$var1); N  # !!!!!
    test1 <- N * n
    test2 <- n/N
    list <-list(test1, test2)
    return(list)
  }

outputs <- lapply(df.list, function(x) 
   x$output <- fun(var1, var2))

Но я не могу сказать R, чтобы он брал длину каждого df, а не только df1, при расчете N внутри функции. У кого-нибудь есть идеи?

Заранее спасибо!

1 Ответ

0 голосов
/ 07 июня 2019

просто выполните итерацию по всем элементам списка и примените данную функцию. Если вы являетесь объектом фрейма данных, вы можете получить доступ к столбцам этого x, как и к любому другому фрейму данных. Также избегайте вызова переменных, которые не объявлены в функции. :)

 fun <- function(var1, var2){
    n <- table(var1, var2)
    N <- length(var1); N  # !!!!!
    test1 <- N * n
    test2 <- n/N
    list <-list(test1, test2)
    return(list)
  }

a <- lapply(df.list, function(x)fun(x[,1],x[,2])   )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...