【问题标题】:R 3.1.0 number of items to replace is not a multiple of replacement length errorR 3.1.0 要替换的项目数不是替换长度的倍数错误
【发布时间】:2014-04-20 09:13:03
【问题描述】:

我写了以下R代码:

csv_data<-temp[1:3]

req_data<-NULL

for(j in 1:length(1:3)){
  req_data[j]<-read.table(csv_data,sep=",")
}

csv_data 包含 3 个文件“001.csv”、“002.csv”和“003.csv”

每个文件有 4 列

在这个 for 循环之后,我希望 req_data 包含 3 个文件:

req_data[1] - contains "001.csv" (all 4 columns)
req_data[2] - contains "002.csv" (all 4 columns)
req_data[3] - contains "003.csv" (all 4 columns)

但是 req_data 实际包含的是什么:

req_data[1] - contains "001.csv" (only 1st column)
req_data[2] - contains "002.csv" (only 1st column)
req_data[3] - contains "003.csv" (only 1st column)

我怎样才能得到预期的结果?

【问题讨论】:

    标签: r for-loop


    【解决方案1】:

    我怀疑您的程序是否按原样运行而没有发出 3 个警告。由于 read.table 返回一个 data.frame,您可以制作一个自包含的示例,如下所示。

    req_data<-NULL
    
    for(j in 1:length(1:3)){
      req_data[j]<- iris[sample(nrow(iris),10),]
    }
    

    给予: 警告信息: 1:在 req_data[j]

    当你写作时:

    req_data[[j]] <-...
    

    您正在将数据框作为元素添加到列表中,这应该可以按要求工作。之后你可能需要一些 do.call(rbind- 魔法,但这不是问题的一部分。

    【讨论】:

    • 是的,req_data[[j]]
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多