我有两个数据框:
df_1 <- data.frame(c("a_b", "a_c", "a_d"))
df_2 <- data.frame(matrix(ncol = 2))
我想循环 df_1 以填充 df_2:
for (i in (1:(length(df_1[,1])))){
for (j in (1:2)) {
df_2[i*j,] <-str_split_fixed(df_1[i,1], "_", 2)
}
}
我希望 df_2 看起来像:
col1 col2
a b
a b
a c
a c
a d
a d
但我得到的是:
col1 col2
a b
a c
a d
a c
NA NA
a d
我一定做错了什么,但无法弄清楚。 我也想使用 apply (或类似的东西,但我对 R 还很陌生,并且对 apply-family 不太坚定。
感谢您的帮助!
最佳答案
另一种方式是
df_1 <- data.frame(col1 = c("a_b", "a_c", "a_d"))
df_2 <- as.data.frame(do.call(rbind, strsplit(as.character(df_1$col1), split = "_", fixed = TRUE)))
df_2[rep(1:nrow(df_2), each = 2), ]
V1 V2
1 a b
1.1 a b
2 a c
2.1 a c
3 a d
3.1 a d
关于r - for 循环表现得很奇怪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42470970/