[英]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
,才將sum
和apply
一起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.