感谢有用的答案:
Loop over vector (introspection in R?) or some other approach
我想从每个向量中得到均值,而不必单独为每个向量键入它。我该怎么做?
我的代码:
probability_ratings = split(offline$Probability,
paste(offline$Item, offline$Cond, sep=""))
head(probability_ratings)
$i01c1
[1] 7 7 7 3 7 3 7 6
$i01c2
[1] 4 4 5 3 4 5 5 3
$i01c3
[1] 7 4 6 4 7 5 5 5
$i01c4
[1] 1 2 2 1 2 2 2 4
$i01c5
[1] 5 5 6 5 7 3 4
$i01c6
[1] 6 6 7 6 7 5 6
我需要每行的平均值,但我不确定这是什么数据类型以及是否/如何应用mean()函数。
谢谢, 卡特里娜
答案 0 :(得分:7)
split
会返回一个列表,因此您只需使用sapply
或lapply
将mean
应用于每个列表元素。 lapply
将返回一个列表,sapply
将返回一个命名向量(在本例中)。
probability_ratings <- list(
i01c1=c(7,7,7,3,7,3,7,6),
i01c2=c(4,4,5,3,4,5,5,3),
i01c3=c(7,4,6,4,7,5,5,5),
i01c4=c(1,2,2,1,2,2,2,4),
i01c5=c(5,5,6,5,7,3,4),
i01c6=c(6,6,7,6,7,5,6) )
sapply(probability_ratings, mean)
# i01c1 i01c2 i01c3 i01c4 i01c5 i01c6
# 5.875000 4.125000 5.375000 2.000000 5.000000 6.142857
答案 1 :(得分:3)
我会选择aggregate(),而不使用split。 使用链接中的示例:
tf <- data.frame(
formant = sample(c("F1","F2"), 100, T),
vowels = sample(c('a', 'e', 'i', 'o', 'u'), 100, T),
IL = runif(100)
)
aggregate(IL ~ formant + vowels, data = tf, mean)
但是还有很多其他的可能性......