0
我創建了一個空列表,我需要使用數據框中的名稱進行填充。如果我有一個名稱,它運行良好,但是如果有多個名稱,則會引發錯誤:「要替換的項目數不是替換長度的倍數」將不同長度的元素添加到R中的列表中
我知道它意味着我有我試圖放入列表元素中的2個或更多項目,但根據我在列表中閱讀的所有內容,「您可以將任何內容存儲在列表中」。所以我知道我正在做一些頭腦發熱的事情,但我無法弄清楚如何找到我需要去的地方。
df <- structure(list(V1 = c("50.strata1", "50.strata1+strata2", "50.strata2* strata4"),
V2 = c("strata1.50", "strata1.50", "strata2.50"), V3 = c(NA, "strata2.50", "strata4.50"), V4 = c(NA, NA, "st2st4.50")),
.Names = c("V1", "V2", "V3", "V4"), row.names = c(1L, 2L, 3L), class = "data.frame")
mlist <- vector("list",nrow(df)) # create the list
names(mlist) <- df[,1] # name the elements because I'll need to be able to call them intuitively later
for(i in 1:nrow(df)){
x1 = unname(unlist(df[i,2:4])) # pull the last three columns of the dataframe
x2 = x1[!is.na(x1)] # strip NA so only left with names
mlist[i] = x2 # add to the empty list element
}
我錯過了什麼,將允許我將可變數量的名稱添加到列表中?一旦我建立了列表,我需要在另一個操作中迭代使用每個元素,首先在給定元素內計算名稱。
謝謝格雷戈爾。我之前做過(我認爲),因爲我知道你必須訪問單個元素,但其他地方一定是錯誤的,因爲它不起作用。但現在它是完美的! –
該死!打敗我吧。 –