首页 > 解决方案 > 在函数中定义特定列

问题描述

我有两个不同的 dfs 和 ks,其他一切都一样。所以我写了一个函数来分别生成数据帧。但是,似乎我不能像这样使用 k 。有什么方法可以解决这个问题吗?

df_1 和 df_2 是数据图中的列表。

所以我有相同的df,它是dataplot,我想用它在函数中定义两个不同的k,per和per_hole。

sumdata_sd <- function (df,k){
  data.frame (
  per_sd_0 = S,
  per_sd_0.2 = df$df_1$k,
  per_sd_0.5 = df$df_2$k,
)}
plot_per <- sumdata_sd(dataplot,per)

可重现的例子

S <- seq (1,7,1)
dataplot <- list(df_1 = list(per = (seq(1,7,1)),per_hole = (seq(2,8,1))),df_2 = list(per = (seq(3,9,1)),per_hole = (seq(4,10,1))))

标签: rfunctiondataframe

解决方案


在函数中我们可以使用[[而不是$如果我们传递一个字符串

sumdata_sd <- function (df,k){
  data.frame (
   per_sd_0 = S,
  per_sd_0.2 = df$df_1[[k]],
  per_sd_0.5 = df$df_2[[k]]
)}

sumdata_sd(dataplot, "per")

推荐阅读