我在使用 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))])))
最佳答案
关于什么
cbw <- c("a","b") # columns beginning with
cbw_pattern <- paste0("^",cbw, collapse = "|")
cbind(df, log=log(df[grep(cbw_pattern, names(df))]))
这样您就可以一次选择两种模式。 (所有三列)。
仅当仅选择一列时,列名将不适合。
关于r - 带有 cbind 和只有一列的自动列前缀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28578988/