【问题标题】:R: How to run a loop after replicating rows in a dataframeR:复制数据框中的行后如何运行循环
【发布时间】:2018-09-29 20:30:21
【问题描述】:

由于特定原因在数据框中复制了几行数据后,我有一个如下数据集:

1          Is John there in Greece?
1.1        Is John there in Greece?
2          I last saw him in Vancoover
2.1        I last saw him in Vancoover
2.2        I last saw him in Vancoover
3          I do not remember if I saw him in the congress in mykonos
4          Happy to see you again in Athens
4.1        Happy to see you again in Athens
4.2        Happy to see you again in Athens
4.3        Happy to see you again in Athens

我的问题是如何使用 FOR 功能: 一种。仅适用于整数(“原始行”) 湾。仅适用于十进制数(“复制行”) C。将所有数字作为一个序列(原始行和复制行)

【问题讨论】:

  • 我建议你重新考虑你的整个方法。行的重复不是你应该做的事情。而是创建一个行索引向量和该索引向量的重复元素。

标签: r loops for-loop indexing


【解决方案1】:

您可以这样做将数据框划分为“整数”行名和“十进制”行名

# "a" is the original dataframe
id <- as.numeric(row.names(a))
a.int <- a[abs(id-round(id))<1e-6,]
a.dec <- a[abs(id-round(id))>1e-6,]

【讨论】:

  • 然后,如何循环 a.dec 数据帧的函数?这将类似于 for (i in .... ..... ....) {} ?我可以输入吗(例如我在 1.1 : 1.8 中?或 1.1 : 8.9)?
  • for(i in 1:nrow(a.dec)){ #some code} 但请尽量避免 R 中的 for 循环。大多数函数的工作原理是您的数据存储在向量或数据框中。还可以查看类似 apply 的函数,即 sapply、lapply、apply、...
  • 尼古拉斯,谢谢你的回答。创建 a.dec 数据框后,我将 nrows 显示为 3.1、3.2 等。有没有办法让它们成为简单的整数?
猜你喜欢
  • 1970-01-01
  • 2016-01-08
  • 2018-12-31
  • 2023-03-14
  • 2015-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多