【问题标题】:How to add a column of data to existing data frames with a loop如何使用循环将一列数据添加到现有数据框中
【发布时间】:2019-07-10 17:29:48
【问题描述】:

我需要将一列数据添加到几个数据帧中,这些数据帧代表从中派生数据的染色体。我已经阅读了许多关于向数据框中添加列的帖子,它们要么过于具体的答案,要么切换到使用应用函数,这些函数在它们的操作方式上非常不透明。有人可以在这里帮助我,向我展示正确的 for 循环和应用技术,以便我可以开始解压缩 apply + function(x) 样式吗?

我尝试使用 paste0 创建一个对象向量以插入到循环中,但失败了。这是我认为循环应该如何工作(但失败)的基本语法:

library(dplyr)

df.1 <- data.frame(V1=rnorm(100), V2=rnorm(100))
df.2 <- data.frame(V1=rnorm(100), V2=rnorm(100))
df.3 <- data.frame(V1=rnorm(100), V2=rnorm(100))

for(i in 1:3){
  df.i <- df.i %>% mutate(CHR = i)
}

这是我使用此代码得到的错误: eval 中的错误(lhs,父级,父级):找不到对象 'df.i'。

输出应如下所示:

head(df.1)
          V1         v2 CHR
1 -1.3545128  0.8267013   1
2  0.3758215 -0.4475770   1
3  0.5209901 -1.1342161   1
4  0.7207743 -1.4273951   1
5 -0.3867220  0.2681198   1
6  1.3279556  0.6116999   1

感谢您的帮助。

【问题讨论】:

    标签: r for-loop lapply


    【解决方案1】:

    您可以尝试将数据放入列表并按如下方式循环。

    df.1 <- data.frame(V1=rnorm(100), V2=rnorm(100))
    df.2 <- data.frame(V1=rnorm(100), V2=rnorm(100))
    df.3 <- data.frame(V1=rnorm(100), V2=rnorm(100))
    df_list <- list(df.1,df.2, df.3)
    for(i in 1:length(df_list)){
      df_list[[i]] <- df_list[[i]] %>% mutate(CHR = i)
    }
    

    【讨论】:

    • 您好,感谢您的回复,但代码没有添加 1、2、3 的列
    【解决方案2】:

    您可以添加列名:

    column_names= ["Id", "Name", "Age", "Weight", 'mreading1', 'mreading2', 'mreading3', 'freading1', 'freading2', 'freading3']
    df = pd.read_csv("defo.csv", names = column_names)
    

    【讨论】:

    • 我不确定这如何帮助我解决问题。你能澄清一下这是如何将数据添加到数据框中的吗?
    • 不需要使用循环,这会使任务变得更加困难,您可以创建一个对象名称为 col=["columnnames"],然后像 pd.read_csv( "YourCSVFILE.csv",names=col)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-02-24
    • 1970-01-01
    • 2011-10-02
    • 1970-01-01
    • 2019-03-02
    • 2018-09-16
    • 2019-04-22
    相关资源
    最近更新 更多