Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/73.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 使用sapply函数中元素的名称_R_Sapply - Fatal编程技术网

R 使用sapply函数中元素的名称

R 使用sapply函数中元素的名称,r,sapply,R,Sapply,sapply可以使用原始列表的名称来命名输出的元素。然而,我有点不清楚它是如何做到的: > base::sapply function (X, FUN, ..., simplify = TRUE, USE.NAMES = TRUE) { FUN <- match.fun(FUN) answer <- lapply(X = X, FUN = FUN, ...) if (USE.NAMES && is.character(X) &&

sapply可以使用原始列表的名称来命名输出的元素。然而,我有点不清楚它是如何做到的:

> base::sapply
function (X, FUN, ..., simplify = TRUE, USE.NAMES = TRUE) 
{
    FUN <- match.fun(FUN)
    answer <- lapply(X = X, FUN = FUN, ...)
    if (USE.NAMES && is.character(X) && is.null(names(answer))) 
        names(answer) <- X # Here it is
    if (!identical(simplify, FALSE) && length(answer)) 
        simplify2array(answer, higher = (simplify == "array"))
    else answer
}
但是,我还想使用传递给sapply的函数中要使用的列表原始元素的名称。如何在函数中使用正在迭代的列表元素的名称

我唯一的解决方法是使用for循环:

for (x in seq_along(list)) {
  y <- FUN(list[[x]]) 
  method(y) <- names(list)[x]
}

如果要同时使用列表的名称和值,可以将名称作为参数传递,并使用它们访问值。这里有一个例子:

score <- list(name1 = 1, name2 = 2)
sapply(names(score), function(name) score[[name]]*nchar(name))

正如您看到的functionname得分[[name]]*ncharname同时使用名称和值得分[[name]]。

我应该考虑一下这一点