R 使用“ends_with”在列表上映射以应用自定义错误函数

R 使用“ends_with”在列表上映射以应用自定义错误函数,r,R,我有一个列表,如下所示: 我正在尝试将映射到它上面,并使用mutate函数应用自定义函数。该列表称为results,我想计算preds与数据帧中另一列之间的错误。所有列表中该列的共同主题是其中一列末尾的1 如何使用contain,以结尾或类似的方式计算自定义函数?列preds在所有数据帧中都是相同的 rse <- function(x, y){ sqrt((x - y)**2) } x <- map(results, ~mutate( error = rse(

我有一个列表,如下所示:

我正在尝试将映射到它上面,并使用mutate函数应用自定义函数。该列表称为
results
,我想计算
preds
与数据帧中另一列之间的错误。所有列表中该列的共同主题是其中一列末尾的
1

如何使用
contain
结尾或类似的方式计算自定义函数?列
preds
在所有数据帧中都是相同的

rse <- function(x, y){
  sqrt((x - y)**2)      
}

x <- map(results, ~mutate(
  error = rse(ends_with("1"), preds)
))

我们在
数据的
列表
上循环使用
映射
('results'),然后使用
mutate_at
修改名称为
1结尾的列,方法是应用
rse
函数,同时指定“y”为“preds”列

library(dplyr)
library(purrr)
results <- map(results, ~ .x %>%
                 mutate_at(vars(ends_with("1")), list(new = ~ rse(., y = preds))))
库(dplyr)
图书馆(purrr)
结果%
在(变量(以“1”结尾)、列表(新=~rse(,y=preds))处进行变异

请用
dput
显示一个可复制的小示例。如果
results
data.frame
list
,那么
map(结果,~.x%>%mutate\u at(vars(以(“1”)结尾)、rse,y=preds))
我的列表太大,无法在这里发布。我将努力在一些名单中占据领先地位。哈,这比我想象的要容易
Lappy(结果,头部)
给了我一个可复制的小例子。谢谢!但是rse计算存储在哪里?@user8959427。它正在更新名称以1结尾的列。如果需要创建新列,也可以这样做。请注意,只有当我现在看到
结果时,对象“results”getss才会更新!谢谢是否可以将计算结果存储在其他列中?@user8959427我更新了帖子。在
列表中
,只有一列的列名以“1”结尾。如果有更多,它将删除所有这些列并附加“new”作为后缀。由于只有一列,代码将创建新列“new”
library(dplyr)
library(purrr)
results <- map(results, ~ .x %>%
                 mutate_at(vars(ends_with("1")), list(new = ~ rse(., y = preds))))