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