具有两列的新数据帧在将行复制到其中一列后显示0行

时间:2016-08-25 22:47:20

标签: r

错误:https://thepb.in/p/2RhK293yo50c4

PID <- character() 
  COVERAGE <- integer() 
  coverage <- data.frame(c(PID, COVERAGE)) 

coverage["PID"] <- laf[1:2,"PID"]; 

print(coverage); 

给出0行

[1] c.PID..COVERAGE. PID 
<0 rows> (or 0-length row.names) 

,而:

print(laf[1:2,"PID"])

给出2行包含PID

的数据
[1] "laf[1:2,\"PID\"]:" 
         PID 
1 4115077351 
2 4115077354

更新

如果我使用的话还会出现一些错误:

coverage[["PID"]] <- laf[1:2,"PID"];

错误:

Error in `$<-.data.frame`(`*tmp*`, "PID", value = list(PID = c("4115077351",  : 
  replacement has 2 rows, data has 0

评论中的每个请求已更新:

此固定宽度文件读入laf:

    4115077351        I29             
    4115077354        I27        27M5S
    411507735519480667E67194806    M5M

另见http://www.faststreamtech.com/stackexchange/stackoverflow/new-dataframe-with-two-columns-errors-with-0-rows/

1 个答案:

答案 0 :(得分:0)

使用:

coverage[["PID"]] <- laf[1:2,"PID"]

您正在分配 coverage 子集(通过子集运算符[)。您应该分配给成员[[是成员访问权限)。这两个功能不同。当您需要分配(或访问)列表成员时,请使用[[。当您需要访问列表的子集时,请使用[。 可以分配给列表的子集但应该与结构匹配。通常您需要[[来分配任务。