清理tribble或rbind的输出(删除奇数列名/ID)
目标:我试图创建一个简单的汇总统计表,其中的行是相同类型的变量,但来自不同的数据集,长度不同 问题:当我使用rbind或tribble组合由函数创建的行时,输出是奇数的 一,。资料 我收到以下结果:清理tribble或rbind的输出(删除奇数列名/ID),r,R,目标:我试图创建一个简单的汇总统计表,其中的行是相同类型的变量,但来自不同的数据集,长度不同 问题:当我使用rbind或tribble组合由函数创建的行时,输出是奇数的 一,。资料 我收到以下结果: RowName N Mu Sigma Min Max [1,] "Age1" "5" "15" "7.90569415042095" "5" "25" RowName N Mu Sigma Min Max [1,] "Age2"
RowName N Mu Sigma Min Max
[1,] "Age1" "5" "15" "7.90569415042095" "5" "25"
RowName N Mu Sigma Min Max
[1,] "Age2" "3" "10" "5" "5" "15"
RowName N Mu Sigma Min Max
[1,] "Age3" "6" "17.5" "9.35414346693485" "5" "30"
在每行上方,列名都会打印出来。我想去掉输出中的列名,但最上面一行的列名除外
3b。使用rbind合并结果
我可以使用rbind而不是tribble将结果打印在一起:
rbind(
summary.stats(Age1$Age, Age1),
summary.stats(Age2$Age, Age2),
summary.stats(Age3$Age, Age3)
)
但我再次得到一个奇怪的结果:
RowName N Mu Sigma Min Max
[1,] "Age1" "5" "15" "7.90569415042095" "5" "25"
RowName N Mu Sigma Min Max
[1,] "Age2" "3" "10" "5" "5" "15"
RowName N Mu Sigma Min Max
[1,] "Age3" "6" "17.5" "9.35414346693485" "5" "30"
RowName N Mu Sigma Min Max
[1,] "Age1" "5" "15" "7.90569415042095" "5" "25"
[2,] "Age2" "3" "10" "5" "5" "15"
[3,] "Age3" "6" "17.5" "9.35414346693485" "5" "30"
任何关于如何清理输出的建议都将不胜感激!谢谢大家! 这里有一个解决方案,似乎可以满足您的需求。所作的修改: 从函数内部删除打印调用。这是运行rbind时额外打印的原因 将cbind更改为TIBLE。这将创建一个数据帧,它比cbind生成的字符向量更适合rbind或dplyr::bind_行。 这使得:
summary.stats <- function(x, d){
RowName <- deparse(substitute(d))
N <- length(x[!is.na(x)])
Mu <- mean(x)
Sigma <- sd(x)
Min <- min(x, na.rm = T)
Max <- max(x, na.rm = T)
Row <- tibble(RowName, N, Mu, Sigma, Min, Max)
}
rbind(
summary.stats(Age1$Age, Age1),
summary.stats(Age2$Age, Age2),
summary.stats(Age3$Age, Age3)
)
# A tibble: 3 x 6
RowName N Mu Sigma Min Max
<chr> <int> <dbl> <dbl> <dbl> <dbl>
1 Age1 5 15.0 7.91 5.00 25.0
2 Age2 3 10.0 5.00 5.00 15.0
3 Age3 6 17.5 9.35 5.00 30.0
步骤3a给了我以下错误:错误:无效规范:有3个元素和6个列eah,我也得到了。我不完全确定如何利用它,但它仍然应该是打印输出。但是,我不认为该错误可能会影响列名的显示方式。我还注意到tribble函数没有打印我试图分配给它的列名,但我认为这些都是不相关的问题。当然,我可能错了。
rbind(
summary.stats(Age1$Age, Age1),
summary.stats(Age2$Age, Age2),
summary.stats(Age3$Age, Age3)
)
RowName N Mu Sigma Min Max
[1,] "Age1" "5" "15" "7.90569415042095" "5" "25"
RowName N Mu Sigma Min Max
[1,] "Age2" "3" "10" "5" "5" "15"
RowName N Mu Sigma Min Max
[1,] "Age3" "6" "17.5" "9.35414346693485" "5" "30"
RowName N Mu Sigma Min Max
[1,] "Age1" "5" "15" "7.90569415042095" "5" "25"
[2,] "Age2" "3" "10" "5" "5" "15"
[3,] "Age3" "6" "17.5" "9.35414346693485" "5" "30"
summary.stats <- function(x, d){
RowName <- deparse(substitute(d))
N <- length(x[!is.na(x)])
Mu <- mean(x)
Sigma <- sd(x)
Min <- min(x, na.rm = T)
Max <- max(x, na.rm = T)
Row <- tibble(RowName, N, Mu, Sigma, Min, Max)
}
rbind(
summary.stats(Age1$Age, Age1),
summary.stats(Age2$Age, Age2),
summary.stats(Age3$Age, Age3)
)
# A tibble: 3 x 6
RowName N Mu Sigma Min Max
<chr> <int> <dbl> <dbl> <dbl> <dbl>
1 Age1 5 15.0 7.91 5.00 25.0
2 Age2 3 10.0 5.00 5.00 15.0
3 Age3 6 17.5 9.35 5.00 30.0