我们得到names(mtcars)
:
[1] "mpg" "cyl" "disp" "hp" "drat" "wt" "qsec" "vs" "am" "gear"
[11] "carb"
我想以编程方式构造一个字符串,作为另一个函数的参数传递给我,这就是我想要它的样子:
structField("mpg", "double"), structField("cyl", "double"),structField("disp", "double")...
据我所知,我可以提出这个:a = vector("character", ncol(mtcars))
创建一个向量a
并从mtcars中为其命名并使用for循环中的名称
names(a) = names(mtcars)
for(i in names(mtcars)) a[i] = unquote(paste0("structField","(", '"',i,'"', ",", '"', "double", '"', ")"))
最后一个for
语句创建以下向量:
mpg cyl
"structField(\"mpg\",\"double\")" "structField(\"cyl\",\"double\")"
disp hp
"structField(\"disp\",\"double\")" "structField(\"hp\",\"double\")"
drat wt
"structField(\"drat\",\"double\")" "structField(\"wt\",\"double\")"
qsec vs
"structField(\"qsec\",\"double\")" "structField(\"vs\",\"double\")"
am gear
"structField(\"am\",\"double\")" "structField(\"gear\",\"double\")"
carb
"structField(\"carb\",\"double\")"
for
语句,以便在每个\
之前不引入"
。 paste(a, collapse = ",")
来获取看起来像这样的最终字符串:
"structField(\"mpg\",\"double\"),structField(\"cyl\",\"double\"),structField(\"disp\",\"double\"),...
,虽然没有\
,但这样做效率更高吗? 感谢。
答案 0 :(得分:1)
使用此:
> sapply(names(mtcars), function(x)paste0("structField(","'",x,"'",",","'" ,typeof(mtcars[[x]]),"'",")"))
mpg cyl
"structField('mpg','double')" "structField('cyl','double')"
disp hp
"structField('disp','double')" "structField('hp','double')"
drat wt
"structField('drat','double')" "structField('wt','double')"
qsec vs
"structField('qsec','double')" "structField('vs','double')"
am gear
"structField('am','double')" "structField('gear','double')"
carb
"structField('carb','double')"
<强>输出强>:
{{1}}