簡體   English   中英

我可以將列表中的數據添加到數據框的列嗎

[英]Can I add data from a list to the columns of a dataframe

我已經編寫了代碼來從 for 循環中的數據幀中提取數據並將其添加到列表中。 像這樣:

  list_vraag1 <- list()        
  for (i in seq(1,nrow(questionanswer),16)){        
    if (questionanswer$answer[i] == 1){        
     antwoord1 <- "Ja"
      } else if (questionanswer$answer[i+1] == 1){        
    antwoord1 <- "Nee"
      } else{        
       antwoord1 <- NA
      }          
      df <- append(list_vraag1, antwoord1)
    }

它給出了一個正確的列表(我為六個不同的問題創建了其中的 6 個列表),現在我嘗試將它們添加到一個新的數據框中,在那里我需要有 6 個不同的列,並且在每一列下必須有一個完整的列表. 這可能嗎? 當我嘗試這個時,整個列表都出現在列名上。 有人對此有解決方案嗎?

目前還不完全清楚你在這里追求什么。 每 16 行取一次對我來說有點令人費解,但我相信它在您的應用程序中有用。 我假設questionanswer是包含 1 或 0(或任何不等於 1 的任何值)的向量或 tibble(數據框)。 在這些假設下:

library(dplyr)
library(tibble)

questionanswer <- tibble(
  answer = sample(c(0, 1), replace = TRUE, size = 100)
)

out <- questionanswer %>%
  mutate(antwoord1 = case_when(answer == 1 ~ "Ja",
                               lead(answer, 1) == 1 ~ "Nee",
                               TRUE ~ "NA")) %>%
  slice(which(row_number() %% 16 == 1)) # slices every 16th row

好吧, out不是一個列表,而是一個 tibble。 但是我們可以輕松地將其強制為列表。 lapply在這里可能沒有用,因為您使用的是lead函數( (questionanswer$answer[i+1]查看下一個元素)。

使用 for 循環,這可能如下所示:

list_vraag1 <- list()        
index <- seq(1,nrow(questionanswer), by = 16)
for (i in seq_along(index)){   
  if (questionanswer$answer[index[i]] == 1){        
    antwoord1 <- "Ja"
  } else if (questionanswer$answer[index[i] + 1] == 1){        
    antwoord1 <- "Nee"
  } else{        
    antwoord1 <- NA
  }          
  list_vraag1[[i]] <- antwoord1
}

這將返回一個列表。 這有幫助嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM