【问题标题】:Is there a method in R to update specific cells of a dataframe with user input?R中是否有一种方法可以使用用户输入更新数据框的特定单元格?
【发布时间】:2019-12-06 19:45:48
【问题描述】:

免责声明:保存一两个奇怪的脚本,我对 R/coding 还是很陌生,这是我在这里的第一篇文章,所以请保持温和。我为事情的含糊程度深表歉意,我现在根本没有编码词汇来最好地描述我正在尝试做的事情。

无论如何:

我有一个数据框,其中b 列描述了留在罐子中的 cookie 数量,x,a 列包含所有罐子的名称,y,从中获取 cookie。

由于从许多不同的 jar 中获取的 cookie 的数量和频率很高,因此该数据框需要定期更新。

到目前为止,我有一个脚本,该脚本将从 jar 和 cookie 的主列表中提取并编写一个 csv,其中仅包含订单所需的 jar 以及每个 jar 中剩余多少 cookie。

我想添加一些readline(prompt),它会询问用户类似“从 Jar z 获取的 cookie 数量:”对于顺序中的每个 Jar,然后更新 jar 主列表中的确切单元格和带有提供的用户输入的 cookie。

除了如何告诉 R 在用户提示中包含 z 之外,我知道如何执行我在这里提到的所有操作。

因此,换句话说,如果我有一个订单表格,其中有人从 jar 5、11 和 31 请求 cookie,我如何告诉 R 提示:

'从 JAR 5 获取的 cookie 数量:'
等待输入
'从 JAR 11 中获取的 cookie 数量:'
等待输入
'从 JAR 31 中获取的 cookie 数量:'
等待输入

【问题讨论】:

  • 你可以将paste()的值组合成一个字符串name <- "Joe"; paste("Hello", name)
  • 添加到@MrFlick...prompt_1 <- paste("Amount of cookies taken from JAR", z); cookies_taken_1 <- readline(prompt_1)

标签: r dataframe prompt readline


【解决方案1】:

这是一个使用for 循环的示例。

1) 我们可以定义一个虚拟数据框:

df <- data.frame(Jars = LETTERS[1:5],
                 Cookie = sample(1:50,5))

所以你的数据框看起来像:

> df
  Jars Cookie
1    A      9
2    B     17
3    C     23
4    D     34
5    E     19

2) 然后,用于迭代 Jars 的代码并要求每个输入并从 Cookie 列中减去它(您甚至可以打印每个 jar 中当前的 cookie 数量,以避免出现负数结果;)):

for(i in 1:nrow(df))
{
  x <- as.numeric(readline(paste0("How many in Jar ",df$Jars[i]," (current number:",df$Cookie[i],") : ")))
  df[i,"Cookie"] <- df[i,"Cookie"] - x
}

3) 正在行动中:

> for(i in 1:nrow(df))
+   {
+     x <- as.numeric(readline(paste0("How many in Jar ",df$Jars[i]," (current number:",df$Cookie[i],") : ")))
+     df[i,"Cookie"] <- df[i,"Cookie"] - x
+   }
How many in Jar A (current number:9) :  0
How many in Jar B (current number:17) : 2
How many in Jar C (current number:23) : 1
How many in Jar D (current number:34) : 3
How many in Jar E (current number:19) : 0

4) 现在你的数据框看起来像:

> df
  Jars Cookie
1    A      9
2    B     15
3    C     22
4    D     31
5    E     19

它是否与您要查找的内容相对应?

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-10
  • 1970-01-01
  • 2019-10-08
  • 2021-09-27
  • 1970-01-01
  • 2021-07-04
相关资源
最近更新 更多