【发布时间】:2018-10-31 06:50:44
【问题描述】:
我有这个循环来计算每列的平均值,这很有效。
for (i in 1:length(DF1)) {
tempA <- DF1[i] # save column of DF1 onto temp variable
names(tempA) <- 'word' # label temp variable for inner_join function
DF2 <- inner_join(tempA, DF0, by='word') # match words with numeric value from look-up DF0
tempB <- as.data.frame(t(colMeans(DF2[-1]))) # compute mean of column
DF3<- rbind(tempB, DF3) # save results togther
}
脚本使用inner_join 的dplyr 包。
- DF0 是具有 3 列(word、value1、value2、value3)的查找数据库。
- DF 1 是每个单元格一个单词的文本数据。
- DF3 是输出。
现在我想计算中位数而不是平均值。使用colMedians function from 'robustbase' 似乎很容易,但我无法让下面的工作。
library(robustbase)
for (i in 1:length(DF1)) {
tempA <- DF1[i]
names(tempA) <- 'word'
DF2 <- inner_join(tempA, DF0, by='word')
tempB <- as.data.frame(t(colMedians(DF2[-1])))
DF3<- rbind(tempB, DF3)
}
错误信息如下:
colMedians(tog[-1]) 中的错误:参数“x”必须是矩阵。
我尝试在 colMedians 函数之前将 DF2 格式化为矩阵,但仍然收到错误消息:
colMedians(tog[-1]) 中的错误:参数“x”必须是矩阵。
我不明白这里发生了什么。感谢您的帮助!
很高兴提供示例数据和错误回溯,但尽量保持简洁。
【问题讨论】:
-
寻求帮助时,您应该包含一个简单的reproducible example,其中包含可用于测试和验证可能解决方案的示例输入和所需输出。
-
您是否尝试过使用 stats 包中的中值函数?
-
试试
colMedians(data.matrix(DF2[-1]))。 -
更改 colMedians 以适用:tempB
-
为什么
*_all*方法在这里不起作用:mtcars %>% summarise_all(funs(median))?我认为一些示例数据会有所帮助。