[英]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.