簡體   English   中英

R,sapply似乎未應用所提供的功能

[英]R, sapply does not seem to apply the function provided

在應用功能家族中,sapply無法產生我想要的結果。 我將問題簡化為下面的基本示例。 我創建一個向量,然后執行求和運算。

1.
v<-c(1:9)
sum(v)
#this returns 45 as expected

2.
sapply (v, sum)
#this returns [1] 1 2 3 4 5 6 7 8 9

我應該如何使用sapply()對上述向量求和? 非常感謝。

sapply將函數應用於列表的每個元素。 因此,您在這里所做的就是將sum應用於每個數字-這並沒有完成任何事情。 您可以看到此示例中發生的情況:

sapply(1:9, function(x) x + 1)
[1]  2  3  4  5  6  7  8  9 10

僅當您想對列表的多個元素sum ,才將sumapply一起apply才有意義:

sapply(list(1:9, 3:4), sum)
[1] 45  7

這里, sum應用於列表中的每個向量

如果您必須使用sapply ,請嘗試,

sapply (list(v), sum)
[1] 45

功能sapply應用功能sum到每個元素。 因此對於向量v ,它是對每個單獨的元素求和。

很明顯,一個元素的總和就是那個元素。

我們使用list函數,將sum函數應用於列表的第一個元素v ,得到所需的結果。

為了理解,我們可以使用任何函數將向量“下移”,例如data.frame

> sapply(data.frame(v), sum)[[1]]
[1] 45

但就您而言,不需要sapply

在這種情況下,您將使用reduce功能

    v<-c(1:9)
    sum(v)
    #this returns 45 as expected

    purrr::reduce(v,sum)
    #this also returns 45

    # or base R
    Reduce(sum,v)
    # this also returns 45

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM