我正在尝试从数据框行创建一个字符串。所以我的小例子是:
df <- data.frame(name=c('bla'), firstname=c('dada'), other=c('dum'))
sprintf('name:%s firstname:%s other:%s',
df[1,'name'],
df[1,'firstname'],
df[1,'other'])
我正在尝试创建一个函数,我可以将数据框作为参数提供,并根据需要创建字符串。
我开始尝试使用sprintf
,但我无法正确理解这些论点:
sprintf(paste(sub('$',':%s',names(df)), collapse=' '), df[1,])
如何取消列表或以其他方式自动使用参数?工作解决方案是:
sprintf(paste(sub('$',':%s',names(df)), collapse=' '),
df[1,'name'],
df[1,'firstname'],
df[1,'other'])
答案 0 :(得分:4)
也许do.call
会有所帮助:
df <- data.frame(name=c('bla'), firstname=c('dada'), other=c('dum'))
fmt <- 'name:%s firstname:%s other:%s'
do.call(sprintf, c(df, fmt = fmt))
# [1] "name:bla firstname:dada other:dum"