R 中是否有一种方法可以使用用户输入更新数据帧的特定单元格?

Is there a method in R to update specific cells of a dataframe with user input?

免责声明:保留一两个奇怪的脚本,我对 R/coding 还是很陌生,这是我第一次 post 在这里,所以请保持温和。我为事情可能有多么模糊而道歉,我现在根本没有编码词汇来最好地描述我正在尝试做的事情。

无论如何:

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

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

截至目前,我有一个脚本将从 jar 和 cookie 的主列表中提取并编写一个 csv,其中仅包含订单所需的 jar 以及每个 jar 中剩余的 cookie 数量。

我想添加一些 readline(prompt),它会针对订单中的每个 Jar 询问用户类似 "Amount of cookies taken from Jar z: " 的内容,然后使用提供的用户输入。

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

所以,换句话说,如果我有一个订单,其中有人从罐子 5、11 和 31 请求 cookie,我该如何告诉 R 提示:

'Amount of cookies taken from JAR 5: '
等待输入
'Amount of cookies taken from JAR 11: '
等待输入
'Amount of cookies taken from JAR 31: '
等待输入

这是一个如何使用 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

是否符合您要查找的内容?