R 如何为split中的数据帧列表创建自定义函数

R 如何为split中的数据帧列表创建自定义函数,r,list,R,List,我不熟悉函数,刚刚发现了split。 我有一个来自split函数的数据帧列表。对于每个数据帧,我想计算一个特定正则表达式的数量,并将总计数转储到一个向量中(然后我打算将该向量添加到所有数据帧的矩阵中) 虽然创建计数很容易,但我不知道如何将其转换为一个函数,该函数将对列表中的所有数据帧执行相同的操作: 这是我迄今为止的尝试 lapply(PClst, function(x) nrow(x[grepl(".*denoma.*", x$Dx, perl = TRUE, ])) 但我得到了一个错误:

我不熟悉函数,刚刚发现了split。 我有一个来自split函数的数据帧列表。对于每个数据帧,我想计算一个特定正则表达式的数量,并将总计数转储到一个向量中(然后我打算将该向量添加到所有数据帧的矩阵中)

虽然创建计数很容易,但我不知道如何将其转换为一个函数,该函数将对列表中的所有数据帧执行相同的操作:

这是我迄今为止的尝试

lapply(PClst, function(x) nrow(x[grepl(".*denoma.*", x$Dx, perl = TRUE, ]))
但我得到了一个错误:

Error in x$Dx : $ operator is invlaid for atomic vectors

我们可以这样做:

list <- split(mtcars, mtcars$cyl)
sapply(list, function(x) sum(grepl("2", x$carb)))

我们可以这样做:

list <- split(mtcars, mtcars$cyl)
sapply(list, function(x) sum(grepl("2", x$carb)))

那么sum是否提供了包含grep的行数?是的,
logical
向量上的
sum()
返回
TRUE
的总数。更标准的做法是使用tapply而不是split sapply:
tapply(grepl(“2”,mtcars$carb),mtcars$cyl,sum)
sum是否会给出包含grep的行数的计数?是的,
逻辑
向量上的
sum()
返回
TRUE
的总数。更标准的做法是使用tapply而不是split sapply:
tapply(grepl(“2”,mtcars$carb),mtcars$cyl,sum)
您能分享一个PClst样本吗?仅供参考,最好给出一个可复制的示例(就像Nathan在回答中所做的那样)。阅读错误消息非常有用。R告诉您错误不在列表中,而是在PClst对象中,它恰好是一个原子向量,因此不符合“x$Dx”语法。您能分享一个PClst示例吗?仅供参考,最好提供一个可复制的示例(就像Nathan在回答中所做的那样)。阅读错误消息非常有用。R告诉您错误不在列表中,而是在PClst对象中,它恰好是一个原子向量,因此不符合“x$Dx”语法。