自动列前缀与cbind和只有一列

drm*_*iod 7 r

我在使用cbind将列添加到数据框的脚本时遇到了一些麻烦.我通过正则表达式选择这些列,我喜欢cbind自动提供前缀,如果你添加多个列.如果您只追加一列,这就不起作用......即使我将此列作为数据框投射......

有办法绕过这种行为吗?

在我的示例中,它适用于以a开头而不是b1列的列.

df <- data.frame(a1=c(1,2,3),a2=c(3,4,5),b1=c(6,7,8))

cbind(df, log=log(df[grep('^a', names(df))]))

cbind(df, log=log(df[grep('^b', names(df))]))

cbind(df, log=as.data.frame(log(df[grep('^b', names(df))])))
Run Code Online (Sandbox Code Playgroud)

Mat*_*ath 2

解决方案是使用日志值创建一个中间数据框并重命名列:

logb = log(df[grep('^b', names(df))]))
colnames(logb) = paste0('log.',names(logb))
cbind(df, logb)
Run Code Online (Sandbox Code Playgroud)