我在使用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)
解决方案是使用日志值创建一个中间数据框并重命名列:
logb = log(df[grep('^b', names(df))]))
colnames(logb) = paste0('log.',names(logb))
cbind(df, logb)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
699 次 |
| 最近记录: |