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