R-向量特定部分的平均值

R-向量特定部分的平均值,r,R,我有以下代码 mean( myList$scores[ myList$IDs == "1234" ] ) 这给了我ID为1234的人的平均分数 假设我有一个ID号列表,这是所有ID号的一个小样本 testIDs=c(1234234564567) 我该如何更改它以返回给我4个平均值,一个列表的平均值为1234,平均值为2345,平均值为3456,平均值为4567 我知道我可以在睾丸上循环,但这不是最好的方法。以下方法如何(还有许多其他方法): 以下是一个编辑,以反映仅获取ID的子集: dta

我有以下代码

mean(  myList$scores[ myList$IDs == "1234" ] )
这给了我ID为1234的人的平均分数

假设我有一个ID号列表,这是所有ID号的一个小样本

testIDs=c(1234234564567)

我该如何更改它以返回给我4个平均值,一个列表的平均值为1234,平均值为2345,平均值为3456,平均值为4567


我知道我可以在睾丸上循环,但这不是最好的方法。

以下方法如何(还有许多其他方法):

以下是一个编辑,以反映仅获取ID的子集:

dta <- data.frame(id = rep(letters[1:10], each = 4), x = rnorm(40))

indx <- dta$id %in% letters[1:4]
lapply(split(dta[indx, 2], dta[indx, 1], drop = TRUE), mean) 

以下方法如何(还有许多其他方法):

以下是一个编辑,以反映仅获取ID的子集:

dta <- data.frame(id = rep(letters[1:10], each = 4), x = rnorm(40))

indx <- dta$id %in% letters[1:4]
lapply(split(dta[indx, 2], dta[indx, 1], drop = TRUE), mean) 

我建议如下

by(myList$scores, INDICES = myList$IDs, FUN = mean)[as.character(testIDs)]

我建议如下

by(myList$scores, INDICES = myList$IDs, FUN = mean)[as.character(testIDs)]

我没有把它作为一个代码部分,因为这一点。我只是指出有4个值。我会将它更新为现在的样子。您可以将代码包装成sappy:
sappy(testIDs,function(s)mean(myList$scores[myList$IDs==s]))
因此,我没有将其作为代码部分。我只是指出有4个值。我会将其更新为现在的状态。您可以将代码包装为sappy:
sappy(testIDs,function(s)mean(myList$scores[myList$IDs==s]))
非常正确,我很抱歉!非常正确,我道歉!
by(myList$scores, INDICES = myList$IDs, FUN = mean)[as.character(testIDs)]