r - 创建一个 For 循环以在 R 中重复 mutate 和 case_when 和 is.na 语句
问题描述
我正在尝试循环以下代码。我需要这些确切的变量名称和条件。我正在尝试创建 83 个“self”变量和 83 个“home”变量。我想学习如何循环这个而不是用系列中的新内容Ctrl+F
替换所有内容,然后复制和粘贴。我已经发布了前 3 个系列,但是我创建了 83 个,其中一些数字被跳过了。(对我来说)最难的部分是跳过, , , , , , 和循环内部。任何帮助是极大的赞赏!A(i)_
A(i+1)_
"A13_"
"A15_"
"A18_"
"A36_"
"A42_"
"A43_"
"A61_"
"A65_"
"A72_"
HYM <- mutate(HYM,A1_self = case_when( (HYM$A1_1 == 1 & is.na(HYM$A1_2) == TRUE & is.na(HYM$A1_3) == TRUE & is.na(HYM$A1_4) == TRUE) | (HYM$A1_1 == 1 & HYM$A1_2 == 1 & is.na(HYM$A1_3) == TRUE & is.na(HYM$A1_4) == TRUE) | (HYM$A1_1 == 1 & HYM$A1_3 == 1 & is.na(HYM$A1_2) == TRUE & is.na(HYM$A1_4) == TRUE) | (HYM$A1_1 == 1 & HYM$A1_4 == 1 & is.na(HYM$A1_2) == TRUE & is.na(HYM$A1_3) == TRUE) ~ 1, (HYM$A1_3 == 1 & is.na(HYM$A1_1) == TRUE & is.na(HYM$A1_2) == TRUE & is.na(HYM$A1_4) == TRUE) | (HYM$A1_3 == 1 & HYM$A1_4 == 1 & is.na(HYM$A1_1) == TRUE & is.na(HYM$A1_2) == TRUE) | (HYM$A1_2 == 1 & HYM$A1_3 == 1 & is.na(HYM$A1_1) == TRUE & is.na(HYM$A1_4) == TRUE) | (HYM$A1_2 == 1 & is.na(HYM$A1_1) == TRUE & is.na(HYM$A1_3) == TRUE & is.na(HYM$A1_4) == TRUE) ~ 0, (HYM$A1_4 == 1 & is.na(HYM$A1_1) == TRUE & is.na(HYM$A1_2) == TRUE & is.na(HYM$A1_3) == TRUE) | (HYM$A1_2 == 1 & HYM$A1_4 == 1 & is.na(HYM$A1_1) == TRUE & is.na(HYM$A1_3) == TRUE) ~ -77, (is.na(HYM$A1_1) == TRUE & is.na(HYM$A1_2) == TRUE & is.na(HYM$A1_3) == TRUE & is.na(HYM$A1_4) == TRUE) ~ -99 ))
HYM <- mutate(HYM, A1_home = case_when( (HYM$A1_2 == 1 & is.na(HYM$A1_1) == TRUE & is.na(HYM$A1_3) == TRUE & is.na(HYM$A1_4) == TRUE) | (HYM$A1_1 == 1 & HYM$A1_2 == 1 & is.na(HYM$A1_3) == TRUE & is.na(HYM$A1_4) == TRUE) | (HYM$A1_2 == 1 & HYM$A1_3 == 1 & is.na(HYM$A1_1) == TRUE & is.na(HYM$A1_4) == TRUE) | (HYM$A1_2 == 1 & HYM$A1_4 == 1 & is.na(HYM$A1_1) == TRUE & is.na(HYM$A1_3) == TRUE) ~ 1, (HYM$A1_3 == 1 & is.na(HYM$A1_1) == TRUE & is.na(HYM$A1_2) == TRUE & is.na(HYM$A1_4) == TRUE) | (HYM$A1_1 == 1 & HYM$A1_3 == 1 & is.na(HYM$A1_2) == TRUE & is.na(HYM$A1_4) == TRUE) ~ 0, (HYM$A1_4 == 1 & is.na(HYM$A1_1) == TRUE & is.na(HYM$A1_2) == TRUE & is.na(HYM$A1_3) == TRUE) | (HYM$A1_3 == 1 & HYM$A1_4 == 1 & is.na(HYM$A1_1) == TRUE & is.na(HYM$A1_2) == TRUE) | (HYM$A1_1 == 1 & HYM$A1_4 == 1 & is.na(HYM$A1_2) == TRUE & is.na(HYM$A1_3) == TRUE) ~ -77, (is.na(HYM$A1_1) == TRUE & is.na(HYM$A1_2) == TRUE & is.na(HYM$A1_3) == TRUE & is.na(HYM$A1_4) == TRUE) | (HYM$A1_1 == 1 & is.na(HYM$A1_2) == TRUE & is.na(HYM$A1_3) == TRUE & is.na(HYM$A1_4) == TRUE) ~ -99 ))
HYM <- mutate(HYM,A2_self = case_when( (HYM$A2_1 == 1 & is.na(HYM$A2_2) == TRUE & is.na(HYM$A2_3) == TRUE & is.na(HYM$A2_4) == TRUE) | (HYM$A2_1 == 1 & HYM$A2_2 == 1 & is.na(HYM$A2_3) == TRUE & is.na(HYM$A2_4) == TRUE) | (HYM$A2_1 == 1 & HYM$A2_3 == 1 & is.na(HYM$A2_2) == TRUE & is.na(HYM$A2_4) == TRUE) | (HYM$A2_1 == 1 & HYM$A2_4 == 1 & is.na(HYM$A2_2) == TRUE & is.na(HYM$A2_3) == TRUE) ~ 1, (HYM$A2_3 == 1 & is.na(HYM$A2_1) == TRUE & is.na(HYM$A2_2) == TRUE & is.na(HYM$A2_4) == TRUE) | (HYM$A2_3 == 1 & HYM$A2_4 == 1 & is.na(HYM$A2_1) == TRUE & is.na(HYM$A2_2) == TRUE) | (HYM$A2_2 == 1 & HYM$A2_3 == 1 & is.na(HYM$A2_1) == TRUE & is.na(HYM$A2_4) == TRUE) | (HYM$A2_2 == 1 & is.na(HYM$A2_1) == TRUE & is.na(HYM$A2_3) == TRUE & is.na(HYM$A2_4) == TRUE) ~ 0, (HYM$A2_4 == 1 & is.na(HYM$A2_1) == TRUE & is.na(HYM$A2_2) == TRUE & is.na(HYM$A2_3) == TRUE) | (HYM$A2_2 == 1 & HYM$A2_4 == 1 & is.na(HYM$A2_1) == TRUE & is.na(HYM$A2_3) == TRUE) ~ -77, (is.na(HYM$A2_1) == TRUE & is.na(HYM$A2_2) == TRUE & is.na(HYM$A2_3) == TRUE & is.na(HYM$A2_4) == TRUE) ~ -99 ))
HYM <- mutate(HYM, A2_home = case_when( (HYM$A2_2 == 1 & is.na(HYM$A2_1) == TRUE & is.na(HYM$A2_3) == TRUE & is.na(HYM$A2_4) == TRUE) | (HYM$A2_1 == 1 & HYM$A2_2 == 1 & is.na(HYM$A2_3) == TRUE & is.na(HYM$A2_4) == TRUE) | (HYM$A2_2 == 1 & HYM$A2_3 == 1 & is.na(HYM$A2_1) == TRUE & is.na(HYM$A2_4) == TRUE) | (HYM$A2_2 == 1 & HYM$A2_4 == 1 & is.na(HYM$A2_1) == TRUE & is.na(HYM$A2_3) == TRUE) ~ 1, (HYM$A2_3 == 1 & is.na(HYM$A2_1) == TRUE & is.na(HYM$A2_2) == TRUE & is.na(HYM$A2_4) == TRUE) | (HYM$A2_1 == 1 & HYM$A2_3 == 1 & is.na(HYM$A2_2) == TRUE & is.na(HYM$A2_4) == TRUE) ~ 0, (HYM$A2_4 == 1 & is.na(HYM$A2_1) == TRUE & is.na(HYM$A2_2) == TRUE & is.na(HYM$A2_3) == TRUE) | (HYM$A2_3 == 1 & HYM$A2_4 == 1 & is.na(HYM$A2_1) == TRUE & is.na(HYM$A2_2) == TRUE) | (HYM$A2_1 == 1 & HYM$A2_4 == 1 & is.na(HYM$A2_2) == TRUE & is.na(HYM$A2_3) == TRUE) ~ -77, (is.na(HYM$A2_1) == TRUE & is.na(HYM$A2_2) == TRUE & is.na(HYM$A2_3) == TRUE & is.na(HYM$A2_4) == TRUE) | (HYM$A2_1 == 1 & is.na(HYM$A2_2) == TRUE & is.na(HYM$A2_3) == TRUE & is.na(HYM$A2_4) == TRUE) ~ -99 ))
HYM <- mutate(HYM,A3_self = case_when( (HYM$A3_1 == 1 & is.na(HYM$A3_2) == TRUE & is.na(HYM$A3_3) == TRUE & is.na(HYM$A3_4) == TRUE) | (HYM$A3_1 == 1 & HYM$A3_2 == 1 & is.na(HYM$A3_3) == TRUE & is.na(HYM$A3_4) == TRUE) | (HYM$A3_1 == 1 & HYM$A3_3 == 1 & is.na(HYM$A3_2) == TRUE & is.na(HYM$A3_4) == TRUE) | (HYM$A3_1 == 1 & HYM$A3_4 == 1 & is.na(HYM$A3_2) == TRUE & is.na(HYM$A3_3) == TRUE) ~ 1, (HYM$A3_3 == 1 & is.na(HYM$A3_1) == TRUE & is.na(HYM$A3_2) == TRUE & is.na(HYM$A3_4) == TRUE) | (HYM$A3_3 == 1 & HYM$A3_4 == 1 & is.na(HYM$A3_1) == TRUE & is.na(HYM$A3_2) == TRUE) | (HYM$A3_2 == 1 & HYM$A3_3 == 1 & is.na(HYM$A3_1) == TRUE & is.na(HYM$A3_4) == TRUE) | (HYM$A3_2 == 1 & is.na(HYM$A3_1) == TRUE & is.na(HYM$A3_3) == TRUE & is.na(HYM$A3_4) == TRUE) ~ 0, (HYM$A3_4 == 1 & is.na(HYM$A3_1) == TRUE & is.na(HYM$A3_2) == TRUE & is.na(HYM$A3_3) == TRUE) | (HYM$A3_2 == 1 & HYM$A3_4 == 1 & is.na(HYM$A3_1) == TRUE & is.na(HYM$A3_3) == TRUE) ~ -77, (is.na(HYM$A3_1) == TRUE & is.na(HYM$A3_2) == TRUE & is.na(HYM$A3_3) == TRUE & is.na(HYM$A3_4) == TRUE) ~ -99 ))
HYM <- mutate(HYM, A3_home = case_when( (HYM$A3_2 == 1 & is.na(HYM$A3_1) == TRUE & is.na(HYM$A3_3) == TRUE & is.na(HYM$A3_4) == TRUE) | (HYM$A3_1 == 1 & HYM$A3_2 == 1 & is.na(HYM$A3_3) == TRUE & is.na(HYM$A3_4) == TRUE) | (HYM$A3_2 == 1 & HYM$A3_3 == 1 & is.na(HYM$A3_1) == TRUE & is.na(HYM$A3_4) == TRUE) | (HYM$A3_2 == 1 & HYM$A3_4 == 1 & is.na(HYM$A3_1) == TRUE & is.na(HYM$A3_3) == TRUE) ~ 1, (HYM$A3_3 == 1 & is.na(HYM$A3_1) == TRUE & is.na(HYM$A3_2) == TRUE & is.na(HYM$A3_4) == TRUE) | (HYM$A3_1 == 1 & HYM$A3_3 == 1 & is.na(HYM$A3_2) == TRUE & is.na(HYM$A3_4) == TRUE) ~ 0, (HYM$A3_4 == 1 & is.na(HYM$A3_1) == TRUE & is.na(HYM$A3_2) == TRUE & is.na(HYM$A3_3) == TRUE) | (HYM$A3_3 == 1 & HYM$A3_4 == 1 & is.na(HYM$A3_1) == TRUE & is.na(HYM$A3_2) == TRUE) | (HYM$A3_1 == 1 & HYM$A3_4 == 1 & is.na(HYM$A3_2) == TRUE & is.na(HYM$A3_3) == TRUE) ~ -77, (is.na(HYM$A3_1) == TRUE & is.na(HYM$A3_2) == TRUE & is.na(HYM$A3_3) == TRUE & is.na(HYM$A3_4) == TRUE) | (HYM$A3_1 == 1 & is.na(HYM$A3_2) == TRUE & is.na(HYM$A3_3) == TRUE & is.na(HYM$A3_4) == TRUE) ~ -99 ))
ID A1_1 A1_2 A1_3 A1_4 A2_1 A2_2 A2_3 A2_4 A3_1 A3_2
<chr> <dbl+> <dbl+lbl> <dbl+lb> <dbl+> <dbl+lb> <dbl+lbl> <dbl+l> <dbl> <dbl> <dbl>
1 1234. NA NA 1 [No] NA NA NA 1 [No] NA NA NA
2 2345. NA 1 [Yes (… NA NA NA NA 1 [No] NA NA NA
3 3456. NA 1 [Yes (… NA NA NA 1 [Yes … NA NA NA NA
5 4567. NA NA 1 [No] NA 1 [Yes… NA NA NA NA NA
6 5678. NA NA 1 [No] NA NA NA 1 [No] NA NA NA
7 9876. NA NA 1 [No] NA NA NA 1 [No] NA NA NA
8 6789. NA NA 1 [No] NA NA NA 1 [No] NA NA NA
9 8765. NA NA NA NA NA NA NA NA NA NA
10 1234. NA NA
11 1234. NA NA NA NA NA NA NA NA NA
12 1234. NA NA NA NA NA NA NA NA NA
13 1234. 1 [Yes… 1 [Yes… NA NA 1 [Yes… 1 [Yes… NA NA 1 [Yes…
14 1234. NA NA NA NA NA NA NA NA NA
15 1234. NA NA NA 1 [Doe… NA NA NA 1 [Doe… NA
16 1234. NA 1 [Yes… NA NA NA NA 1 [No] NA NA
17 1234. NA NA 1 [No] NA 1 [Yes… NA NA NA NA
18 1234. 1 [Yes… NA NA NA NA NA NA 1 [Doe… NA
19 1234. 1 [Yes… NA NA NA NA NA 1 [No] NA 1 [Yes…
20 1234. 1 [Yes… NA NA NA 1 [Yes… NA NA NA NA
解决方案
函数pivot_longer()
、pivot_wider()
和group_by()
将允许您避免复制查找粘贴例程。
顺便说一句,在创建可重现的示例时,展示您如何创建数据示例会很有帮助。我不能完全按照你的数据示例,所以我创建了一个类似的数据集:
library(dplyr)
library(tidyr)
# create example data
set.seed(1)
HYM <- matrix(data = rbinom(20*10, 1, .1),
nrow = 20,
ncol = 10) %>%
as.data.frame()
HYM[HYM == 0] <- NA
names(HYM) <- c(paste0("A1_", 1:4),
paste0("A2_", 1:4),
paste0("A3_", 1:2))
HYM$ID <- c(1234, 2345, 3456, 4567, 5678,
9876, 6789, 8765, rep(1234, 12))
HYM <- HYM %>% select(ID, everything())
# view first 6 rows of example data
head(HYM)
ID A1_1 A1_2 A1_3 A1_4 A2_1 A2_2 A2_3 A2_4 A3_1 A3_2
1 1234 NA NA NA NA NA NA NA 1 NA NA
2 2345 NA NA NA NA NA NA NA NA NA NA
3 3456 NA NA 1 NA NA NA NA NA NA NA
4 4567 NA NA NA NA NA NA 1 NA NA 1
5 5678 NA 1 NA NA NA NA NA NA NA NA
6 9876 NA NA NA NA NA 1 1 NA NA NA
从您的代码中,您似乎希望单独考虑原始数据中的每一行(无论 ID 列如何)并根据每个变量名称的第一部分(例如,“A2_1”的“A2”部分)生成分组摘要")。
为此,我们可以添加行标识符并将数据重新整形为更长的格式。通过这个重塑步骤,我们可以将每个变量的名称(“A2_1”)分成两部分(“A2”和“1”)。这将允许我们按变量名的“A2”部分进行分组,避免复制-查找-粘贴:
HYM_long <- HYM %>%
# add a row identifier
mutate(row_id = row_number()) %>%
# swing all your 'A*_*' variables into a column with their values in another column
pivot_longer(cols = c(-ID, -row_id),
names_to = "name",
values_to = "condition") %>%
# pull apart the, e.g., "A2" and "1" of "A2_1"
separate(name, c("name1", "name2"), sep = "_") %>%
# make names friendly to pull back out into a wider format
mutate(name2 = paste0("name2_", name2)) %>% # e.g. "1" becomes "name2_1"
pivot_wider(names_from = name2,
values_from = condition,
values_fill = 0)
请注意,如果我们查看数据,在最后一步中,我们将不存在的变量填充为 0;例如,示例数据中没有“A3_3”,因此name1
“A3”何时name2_3
为 0:
# peek at the data
head(HYM_long)
ID row_id name1 name2_1 name2_2 name2_3 name2_4
<dbl> <int> <chr> <int> <int> <int> <int>
1 1234 1 A1 NA 1 NA 1
2 1234 1 A2 NA NA 1 NA
3 1234 1 A3 NA NA 0 0
4 2345 2 A1 NA NA NA NA
5 2345 2 A2 NA NA NA NA
6 2345 2 A3 NA NA 0 0
接下来,确定要跳过且不为self
和变量赋值的home
变量。对于这个例子,我假设“A3_”是这些变量之一,但我已经为你提到的确切变量包含了注释掉的代码:
# identify the variables you want to skip over
# pass_vars <- paste0("A", c(13, 15, 18, 36, 42, 43,61, 65, 72))
pass_vars <- "A3"
现在总结self
和home
变量(没有复制查找粘贴):
# create self and home variables
HYM_long_subset <- HYM_long %>%
filter(!name1 %in% pass_vars) %>%
group_by(row_id, ID, name1) %>%
summarize(self = case_when(
name2_1 == 1 & sum(is.na(name2_2), is.na(name2_3), is.na(name2_4)) > 1 ~ 1,
name2_3 == 1 & sum(is.na(name2_1), is.na(name2_2), is.na(name2_4)) > 1 ~ 0,
name2_2 == 1 & is.na(name2_1) & is.na(name2_3) & is.na(name2_4) ~ 0,
name2_4 == 1 & sum(is.na(name2_1), is.na(name2_2), is.na(name2_3)) > 1 ~ -77,
is.na(name2_1) & is.na(name2_2) & is.na(name2_3) & is.na(name2_4) ~ -99),
home = case_when(
name2_2 == 1 & sum(is.na(name2_1), is.na(name2_3), is.na(name2_4)) > 1 ~ 1,
name2_4 == 1 & sum(is.na(name2_2), is.na(name2_3), is.na(name2_1)) > 1 ~ -77,
name2_3 == 1 & sum(is.na(name2_2), is.na(name2_1), is.na(name2_4)) > 1 ~ 0,
name2_1 == 1 & sum(is.na(name2_2), is.na(name2_3), is.na(name2_4)) > 1 ~ -99,
is.na(name2_1) & is.na(name2_2) & is.na(name2_3) & is.na(name2_4) ~ -99))
数据就在那里,但如果你想把它转回宽格式:
# swing wide & remove the row identifier
HYM_long_subset %>%
pivot_longer(cols = c(self, home),
names_to = "summary_type") %>%
mutate(name_var = paste(name1, summary_type, sep = "_")) %>%
select(row_id, ID, name_var, value) %>%
pivot_wider(names_from = name_var,
values_from = value) %>%
ungroup() %>%
select(-row_id)
# A tibble: 20 x 5
ID A1_self A1_home A2_self A2_home
<dbl> <dbl> <dbl> <dbl> <dbl>
1 1234 -77 1 0 0
2 2345 -99 -99 -99 -99
3 3456 -99 -99 -99 -99
4 4567 1 -99 0 1
5 5678 -99 -99 -99 -99
6 9876 -99 -99 -99 -99
7 6789 1 -99 -99 -99
8 8765 -99 -99 -99 -99
9 1234 -99 -99 0 1
10 1234 -99 -99 -99 -99
11 1234 -99 -99 0 1
12 1234 -99 -99 -99 -99
13 1234 -99 -99 -99 -99
14 1234 -99 -99 -99 -99
15 1234 -99 -99 0 0
16 1234 -99 -99 -99 -99
17 1234 -99 -99 -99 -99
18 1234 1 -99 -99 -99
19 1234 -99 -99 0 0
20 1234 -77 -77 -99 -99
带有 for 循环的示例
与您在原始问题中提到的数据结构(“A92_4”等)保持一致,这里是一个使用 for 循环的示例(根据评论中的要求)。
# creating a new data example
set.seed(1)
n_name1 <- 92 # e.g., "A1_" ... "A92_"
n_name2 <- 4 # e.g., "A1_1" ... "A1_4"
HYM <- matrix(data = rbinom(20*(n_name1*n_name2), 1, .1),
nrow = 20,
ncol = (n_name1*n_name2)) %>%
as.data.frame()
HYM[HYM == 0] <- NA
names(HYM) <- paste0("A", 1:n_name1) %>%
rep(., each = n_name2) %>%
paste0(., "_", 1:n_name2)
HYM$ID <- c(1234, 2345, 3456, 4567, 5678,
9876, 6789, 8765, rep(1234, 12))
HYM <- HYM %>% select(ID, everything())
# identify the variables you want to skip over ... from these we can then
# grab the starting pattern of the variables you want to keep/summarize
pass_vars <- paste0("A", c(13, 15, 18, 36, 42, 43,61, 65, 72))
keep_vars <- names(HYM %>% select(-ID, -starts_with(pass_vars)))
keep_vars.name1 <- keep_vars %>%
gsub("_.*", "", .) %>%
unique()
在您的情况下,在您的语句中使用sym
and !!
(又名 bang-bang)动态命名和引用变量会很有用:mutate
# using mutate to add on summary variables
for (i in keep_vars.name1) {
var_names <- paste0(i, "_", 1:n_name2)
new_vars <- paste0(i, c("_self", "_home"))
HYM <- HYM %>% mutate(
!!sym(new_vars[1]) := case_when(
(!!sym(var_names[1]) == 1) & (sum(is.na(!!sym(var_names[2])),
is.na(!!sym(var_names[3])),
is.na(!!sym(var_names[4]))) > 1) ~ 1,
(!!sym(var_names[3]) == 1) & (sum(is.na(!!sym(var_names[1])),
is.na(!!sym(var_names[2])),
is.na(!!sym(var_names[4]))) > 1) ~ 0,
(!!sym(var_names[2]) == 1) & (sum(is.na(!!sym(var_names[1])),
is.na(!!sym(var_names[3])),
is.na(!!sym(var_names[4]))) > 1) ~ 0,
(!!sym(var_names[4]) == 1) & (sum(is.na(!!sym(var_names[1])),
is.na(!!sym(var_names[2])),
is.na(!!sym(var_names[3]))) > 1) ~ -77,
is.na(!!sym(var_names[1])) & is.na(!!sym(var_names[2])) &
is.na(!!sym(var_names[3])) & is.na(!!sym(var_names[4])) ~ -99),
!!sym(new_vars[2]) := case_when(
(!!sym(var_names[2]) == 1) & (sum(is.na(!!sym(var_names[1])),
is.na(!!sym(var_names[3])),
is.na(!!sym(var_names[4]))) > 1) ~ 1,
(!!sym(var_names[4]) == 1) & (sum(is.na(!!sym(var_names[1])),
is.na(!!sym(var_names[2])),
is.na(!!sym(var_names[3]))) > 1) ~ -77,
(!!sym(var_names[3]) == 1) & (sum(is.na(!!sym(var_names[1])),
is.na(!!sym(var_names[2])),
is.na(!!sym(var_names[4]))) > 1) ~ 0,
(!!sym(var_names[1]) == 1) & (sum(is.na(!!sym(var_names[4])),
is.na(!!sym(var_names[2])),
is.na(!!sym(var_names[3]))) > 1) ~ -99,
is.na(!!sym(var_names[1])) & is.na(!!sym(var_names[2])) &
is.na(!!sym(var_names[3])) & is.na(!!sym(var_names[4])) ~ -99))
}
推荐阅读
- python - 如何修复 SQLAlchemy 连接问题:连接到 IBM Cloud 上托管的 IBM db2 服务器时出现“需要 SQLAlchemy 格式的连接信息”
- shader - 在 HLSL 片段着色器中实例化
- http - http可以在其他平台上使用吗?
- shell - 在后台使用 find gun 执行 shell
- apache-spark - Spark vs Hadoop 这个简单的例子?
- arrays - 在 React Native 中显示嵌套对象数组中的所有数据
- c - 如何使用正确提供的 argc、argv、envp 从 NASM 调用用 C 编写的链接可执行文件中的主函数
- apache-spark - 由于节点故障和源数据更改,从初始源一直重新计算 Spark 分区
- scala - 数组列中的Scala DataFrame过滤器值
- c++ - 为什么这是一个常量字符,而不是正常字符?