【问题标题】:Rbind not working when including dynamic variable through assign function通过分配函数包含动态变量时,Rbind 不起作用
【发布时间】:2020-10-30 19:37:30
【问题描述】:

我的代码行是

df1<-rbind(df1,assign(paste(x,"_name_",_Date,sep=""),Result))

基本上

assign(paste(x,"_name_",_Date,sep=""),Result)

相同
df2

当我这样做时

df1<-rbind(df1,df2)

它可以工作,但这需要动态且不断变化,因为我每周都会进行这些更新。

【问题讨论】:

    标签: r dynamic rbind


    【解决方案1】:

    我们需要get 从对象名称字符串中返回值,即assign 只将它分配给一个对象,它不返回值。

    rbind(df1, {
           nm1 <- paste(x,"_name_",_Date,sep="")
           assign(nm1, Result)
           get(nm1)})
    

    使用一个可重现的小例子

    rbind(head(iris), {
           nm1 <- 'newobj'
           assign(nm1, tail(iris))
           get(nm1)})
    #    Sepal.Length Sepal.Width Petal.Length Petal.Width   Species
    #1            5.1         3.5          1.4         0.2    setosa
    #2            4.9         3.0          1.4         0.2    setosa
    #3            4.7         3.2          1.3         0.2    setosa
    #4            4.6         3.1          1.5         0.2    setosa
    #5            5.0         3.6          1.4         0.2    setosa
    #6            5.4         3.9          1.7         0.4    setosa
    #145          6.7         3.3          5.7         2.5 virginica
    #146          6.7         3.0          5.2         2.3 virginica
    #147          6.3         2.5          5.0         1.9 virginica
    #148          6.5         3.0          5.2         2.0 virginica
    #149          6.2         3.4          5.4         2.3 virginica
    #150          5.9         3.0          5.1         1.8 virginica
     
    

    【讨论】:

    • 它说它不存在但我清楚地看到数据框存在的原因吗?
    • match.names(clabs, names(xi)) 中的错误:名称与以前的名称不匹配,但所有列都匹配,甚至运行布尔值全部为 true。
    • @user35131 rbind 要求两个数据集中的列名相同。我用iris 展示了一个可重复的小例子,对我来说效果很好
    • @user35131 请查看all.equal(names(df1), names(Result))
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-06
    • 2015-01-20
    • 1970-01-01
    • 1970-01-01
    • 2020-06-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多