Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
清理tribble或rbind的输出(删除奇数列名/ID)_R - Fatal编程技术网

清理tribble或rbind的输出(删除奇数列名/ID)

清理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"

目标:我试图创建一个简单的汇总统计表,其中的行是相同类型的变量,但来自不同的数据集,长度不同

问题:当我使用rbind或tribble组合由函数创建的行时,输出是奇数的

一,。资料

我收到以下结果:

     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