【问题标题】:Paste string values from df column into a function将 df 列中的字符串值粘贴到函数中
【发布时间】:2018-05-01 20:10:21
【问题描述】:

我在 R 中有一个这样组织的数据集:

             x freq
1 PRODUCT10000    6
2 PRODUCT10001   20
3 PRODUCT10002   11
4 PRODUCT10003    4
5 PRODUCT10004    1
6 PRODUCT10005    2

然后,我有一个类似的功能

fun <- function(number, df1, string, df2){NormC <- as.numeric(df1[string, "normc"])
    df2$NormC <- rep(NormC)} 

如何遍历我的 df 并将 "x" 的每个值插入到函数中?

我认为问题在于函数的这一部分(有 4 个输入变量)的结构是这样的-NormC &lt;- as.numeric(df[string, "normc"])

【问题讨论】:

  • fun 是做什么的?根据fun 的工作方式,您可能不需要迭代。 R 中的许多操作都是矢量化的,因此如果您的函数以某种方式编写,您只需调用 fun(df$x)
  • 问题是,该函数有 4 个输入变量...对于其中一个变量,我想遍历 df 的行-我也无法将行用作字符串值.. .
  • 在这种情况下,您可能会通过编辑您的问题以提供minimal reproducible example 来获得更高质量的帮助。在您的情况下,包括fun 的定义,可能有更多关于您的数据的信息,因为您正在谈论需要在此操作中处理至少三个其他变量等。
  • 我已签署 NDA,因此无法复制数据,但我已尝试编辑问题以提供您提到的信息。

标签: r string loops paste


【解决方案1】:

正如@duckmayr 所解释的,您不需要遍历列x。这是一个创建新变量的示例。

df <- read.table(text = "             x freq
1 PRODUCT10000    6
2 PRODUCT10001   20
3 PRODUCT10002   11
4 PRODUCT10003    4
5 PRODUCT10004    1
6 PRODUCT10005    2", header = TRUE)
fun <- function(string){paste0(string, "X")} # example 
# option 1
df$new.col1 <- fun(df$x) # see duckmayr's comment
# option 2
library(data.table)
setDT(df)[, new.col2 := fun(x)]

【讨论】:

  • 请看我对@duckmayr 评论的回复
猜你喜欢
  • 2021-11-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多