Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 在数据帧列表上使用tapply_R_Lapply_Tapply - Fatal编程技术网

R 在数据帧列表上使用tapply

R 在数据帧列表上使用tapply,r,lapply,tapply,R,Lapply,Tapply,我想在数据帧列表中使用tapply来计算各个组的总和,然后将值0的出现情况制成表格。在单个数据帧上,我将执行以下操作: sums <- tapply(my_data_frame$V3, my_data_frame$V2, sum) table(unlist(sums==0)) 有人能给我一些提示吗?考虑构建一个通用函数,用于调用read.table、tapply、和table并让lapply迭代读取文件和调用您的过程: proc_sums <- function(myfile) {

我想在数据帧列表中使用tapply来计算各个组的总和,然后将值0的出现情况制成表格。在单个数据帧上,我将执行以下操作:

sums <- tapply(my_data_frame$V3, my_data_frame$V2, sum)
table(unlist(sums==0))

有人能给我一些提示吗?

考虑构建一个通用函数,用于调用
read.table
tapply
、和
table
并让
lapply
迭代读取文件和调用您的过程:

proc_sums <- function(myfile) {
   # READ FILE INTO DATA FRAME
   my_data_frame <- read.table(myfile, skip = 1, sep = "\t")
   my_data_frame <- na.omit(my_data_frame)

   # RUN GROUP SUMS
   sums <- tapply(my_data_frame$V3, my_data_frame$V2, sum)
   tbl <- table(unlist(sums==0))

   return(tbl)
}

files <- Sys.glob("*txt")
# ITERATE THROUGH FILES AND CALL PROCEDURE
list_of_sum_tables <- lapply(files, proc_sums)

proc\u sums你好,Mareike。请阅读并更新您的问题。另外,请在你的问题中解释什么构成“组”。这不是一个数据帧列表:
my_data_frame$V3,my_data_frame$V2
,它是一个列列表(或者你称之为“单个组”)。您想按名称还是按索引引用列?
lappy(listOfFiles,“[”,c(2))
…c(3)的意图
只需从每个数据帧中分割列2、3。有许多更简单的方法可以做到这一点,并重复问题。首先,您希望使用什么数据结构来保持多个数据帧?列表?TIBLE?
lapply(listOfFiles, tapply(
    lapply(listOfFiles, "[", c(2)),
    lapply(listOfFiles, "[", c(3)),
    sum)
)
proc_sums <- function(myfile) {
   # READ FILE INTO DATA FRAME
   my_data_frame <- read.table(myfile, skip = 1, sep = "\t")
   my_data_frame <- na.omit(my_data_frame)

   # RUN GROUP SUMS
   sums <- tapply(my_data_frame$V3, my_data_frame$V2, sum)
   tbl <- table(unlist(sums==0))

   return(tbl)
}

files <- Sys.glob("*txt")
# ITERATE THROUGH FILES AND CALL PROCEDURE
list_of_sum_tables <- lapply(files, proc_sums)