【问题标题】:R cbind with get pasteR cbind with get paste
【发布时间】:2021-08-10 12:46:35
【问题描述】:

cbind() 函数用作x <- cbind(a,b)

可以为函数b = get(paste0('var',i))指定列名'b',

那是x <- cbind(a,b = get(paste0('var',i)))

我正在尝试执行以下操作:

x <- cbind(a, get(paste0('var',i))) = j),其中“j”可以是向量或函数。

但是,得到以下错误:Error: unexpected '=' in "x <- cbind(a, get(paste0('var',i))) = j)"

如果我只指定"x <- cbind(a, get(paste0('var',i))))",那么第2列名称是"get(paste0('var',i))))",不方便。

如何在cbind()rbind()bind_cols() 中使用函数get(paste()) 定义列名?或者有什么替代解决方案?

【问题讨论】:

    标签: r get paste cbind


    【解决方案1】:

    一个例子可能有助于理解这个问题,但也许这个?

    x <- cbind(a, j)
    colnames(x)[2] <- get(paste0('var',i))
    

    或者如果你想在单行中完成 -

    x <- cbind(a, setNames(j, get(paste0('var',i))))
    

    【讨论】:

    • 可以,但在我的情况下,'j' 是动态向量,因此,这是同样的问题。
    • 你能举个例子吗?
    • 不幸的是我不能,因为我在远程服务器上工作,有一组许多 csv 文件。关键是:我想为每个数据框创建一个新的计算变量(列),以数据框名称为条件,并将其绑定到每个数据框,因此,我试图“粘贴”特定名称到 cbind() 函数。
    • 到目前为止,这个解决方案提供了:assign('a', function())assign('b', function())X &lt;- cbind(a, b)colnames(x)[ncol(x)] &lt;- paste0('var',i)assign(paste0('x',i), x)
    【解决方案2】:

    我们可以使用

    x <- data.frame(a, j)
    colnames(x)[2] <- get(paste('var', i, sep=""))
    

    或使用tibble

    tibble(a, !! b := j)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-09
      • 2016-08-04
      • 1970-01-01
      • 2011-05-21
      • 1970-01-01
      • 2023-03-31
      • 2017-12-11
      • 1970-01-01
      相关资源
      最近更新 更多