我有一个长度等于数据框中列数的列表。
示例如下
set.seed(123)
list1 <- list(a = c("cat", "dog", "duck", "mice"), b =
c("cat", "dog"), c = c("duck", "dog"))
df <- data.frame(a = rnorm(10), b = rnorm(10), c = rnorm(10),
row.names = c("cat", "dog", "duck", "mice",
"elephant","monkey", "lion",
"goat", "cow", "sheep"))
然后,每个list1
名称的元素应与每列的df
中的行名称匹配,并计算它们的平均值。例如:
list$a
的元素是:
`[1] "cat" "dog" "duck" "mice"`
上述元素应与列a
的行名称匹配,并计算均值.20964
。
我想在R
中使用向量化操作对数据框中的所有列执行此操作,其中输出是df
中所有列的均值列表。
我在SO上找了类似的问题但是找不到。如果我忽略了,请原谅。
修改
请原谅我输错了,但我想要的输出应该是:
a b c
1 0.2096409 -0.3953266 0.6642654
其中b
是df$b
的平均值,匹配list1$b
个元素,行名称为df
,依此类推。
答案 0 :(得分:2)
我们遍历&#39; list1&#39;,将&#39; df&#39;的行子集。根据{{1}}元素中的rownames获取imshow
list
答案 1 :(得分:1)
这个怎么样?
lapply(list1, function(l) sapply(df[l, ], mean))