使用“mapply”创建输出
Use ´mapply´ to create an output
我想为每个条目创建一个带有要点的输出
数据
我的数据框中有一行(而且只有一行):
structure(list(Dimensions = 2L, Continuity = structure(2L, .Label = c("",
"continuous"), class = "factor"), Differentiability = structure(2L, .Label = c("",
"differentiable", "non-differentiable"), class = "factor"), Convexity = structure(2L, .Label = c("",
"convex", "non-convex"), class = "factor"), Modality = structure(3L, .Label = c("",
"multimodal", "unimodal"), class = "factor"), Separability = structure(2L, .Label = c("",
"non-separable", "non-separable,", "separable"), class = "factor"),
Scalability = structure(2L, .Label = c("", "non-scalable",
"scalable"), class = "factor"), Parametric = FALSE, Random = FALSE), row.names = 2L, class = "data.frame")
方法
mapply(function(x, y) cat("* ", y, ": ", as.character(x), "\n"), Descr, names(Descr))
期望的输出
* Dimensions : 2
* Continuity : continuous
* Differentiability : differentiable
* Convexity : convex
* Modality : unimodal
* Separability : non-separable
* Scalability : non-scalable
* Parametric : FALSE
* Random : FALSE
实际结果
我已经很接近我想要的了。但是,R 不仅会打印所需的部分,还会在之后添加所有列的列表。所以输出看起来像这样:
* Dimensions : 2
* Continuity : continuous
* Differentiability : differentiable
* Convexity : convex
* Modality : unimodal
* Separability : non-separable
* Scalability : non-scalable
* Parametric : FALSE
* Random : FALSE
$Dimensions
NULL
$Continuity
NULL
$Differentiability
NULL
$Convexity
NULL
$Modality
NULL
$Separability
NULL
$Scalability
NULL
$Parametric
NULL
$Random
NULL
不仅仅是一个有效的解决方案,如果有人能给我提示这里发生了什么,我将不胜感激。
R 中的 *apply
函数总是有一个输出。
解决这个问题的一种方法是用 invisible
:
调用它们
invisible(mapply(function(x, y) cat("* ", y, ": ", as.character(x), "\n"), Descr, names(Descr)))
* Dimensions : 2
* Continuity : continuous
* Differentiability : differentiable
* Convexity : convex
* Modality : unimodal
* Separability : non-separable
* Scalability : non-scalable
* Parametric : FALSE
* Random : FALSE
purrr
包具有 walk
组函数,原因如下:
library(purrr)
walk2(Descr,names(Descr), function(x, y) cat("* ", y, ": ", as.character(x), "\n"))
* Dimensions : 2
* Continuity : continuous
* Differentiability : differentiable
* Convexity : convex
* Modality : unimodal
* Separability : non-separable
* Scalability : non-scalable
* Parametric : FALSE
* Random : FALSE
一个选项是将输出分配给一个变量:
x <- mapply(function(x, y) cat("* ", y, ": ", as.character(x), "\n"), Descr, names(Descr))
我想为每个条目创建一个带有要点的输出
数据
我的数据框中有一行(而且只有一行):
structure(list(Dimensions = 2L, Continuity = structure(2L, .Label = c("",
"continuous"), class = "factor"), Differentiability = structure(2L, .Label = c("",
"differentiable", "non-differentiable"), class = "factor"), Convexity = structure(2L, .Label = c("",
"convex", "non-convex"), class = "factor"), Modality = structure(3L, .Label = c("",
"multimodal", "unimodal"), class = "factor"), Separability = structure(2L, .Label = c("",
"non-separable", "non-separable,", "separable"), class = "factor"),
Scalability = structure(2L, .Label = c("", "non-scalable",
"scalable"), class = "factor"), Parametric = FALSE, Random = FALSE), row.names = 2L, class = "data.frame")
方法
mapply(function(x, y) cat("* ", y, ": ", as.character(x), "\n"), Descr, names(Descr))
期望的输出
* Dimensions : 2
* Continuity : continuous
* Differentiability : differentiable
* Convexity : convex
* Modality : unimodal
* Separability : non-separable
* Scalability : non-scalable
* Parametric : FALSE
* Random : FALSE
实际结果
我已经很接近我想要的了。但是,R 不仅会打印所需的部分,还会在之后添加所有列的列表。所以输出看起来像这样:
* Dimensions : 2
* Continuity : continuous
* Differentiability : differentiable
* Convexity : convex
* Modality : unimodal
* Separability : non-separable
* Scalability : non-scalable
* Parametric : FALSE
* Random : FALSE
$Dimensions
NULL
$Continuity
NULL
$Differentiability
NULL
$Convexity
NULL
$Modality
NULL
$Separability
NULL
$Scalability
NULL
$Parametric
NULL
$Random
NULL
不仅仅是一个有效的解决方案,如果有人能给我提示这里发生了什么,我将不胜感激。
R 中的 *apply
函数总是有一个输出。
解决这个问题的一种方法是用 invisible
:
invisible(mapply(function(x, y) cat("* ", y, ": ", as.character(x), "\n"), Descr, names(Descr)))
* Dimensions : 2
* Continuity : continuous
* Differentiability : differentiable
* Convexity : convex
* Modality : unimodal
* Separability : non-separable
* Scalability : non-scalable
* Parametric : FALSE
* Random : FALSE
purrr
包具有 walk
组函数,原因如下:
library(purrr)
walk2(Descr,names(Descr), function(x, y) cat("* ", y, ": ", as.character(x), "\n"))
* Dimensions : 2
* Continuity : continuous
* Differentiability : differentiable
* Convexity : convex
* Modality : unimodal
* Separability : non-separable
* Scalability : non-scalable
* Parametric : FALSE
* Random : FALSE
一个选项是将输出分配给一个变量:
x <- mapply(function(x, y) cat("* ", y, ": ", as.character(x), "\n"), Descr, names(Descr))