r - for 循环表现得很奇怪

标签 r for-loop

我有两个数据框:

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/

相关文章:

javascript - 选择文本并替换为循环

r - 我可以自定义 ggplot 图例中的个人项目吗?

r - 将决策边界拟合到 R 中的逻辑回归模型

r - 目录问题,无法安装 RStudio Server Packages Ubuntu

r - 如何在数据帧上执行函数

swift - 正确的 swift 2.2 语法和 for 循环

r - 在大型数据集中,确定哪些变量是分类变量,哪些是数字变量

r - 将ggplot2网格导出为PDF错误: 'Error in grid.Call.graphics... invalid font type'

python - 登录认证系统

r - 当我需要为每个元素选择适当的模型时,如何避免 for 循环?