从数据框行自动生成字符串

时间:2015-06-01 08:12:41

标签: r

我正在尝试从数据框行创建一个字符串。所以我的小例子是:

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'])

1 个答案:

答案 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"