应用返回向量第一个元素的重复实例,而不是 R 中自定义函数计算的所有元素

sapply returning repeated instances of first element of vector instead of all elements calculated by custom function in R

考虑我的数据集中的以下列:

df$PT :包含具有重复模式的字符串。例子: [1] "60D 0%" "5M 2%" "4 2ND M 5%" ...

df$date : 日期列 [1] "2021-01-18" "2021-01-18" "2021-01-18" ...

我设法创建了一个函数,它从上面的列中读取输入,对它们进行操作,returns 另一个日期(我们称之为 date2)。该函数运行良好(我通过手动传递参数对其进行了测试):

function1(时间,日期){ #if/else 从 PTdate 生成 date2 的链 #function returns (date2) 或 NA 根据 if/else 条件 }

到目前为止一切顺利。当我尝试使用 sapply 为 df$PT 列的每个术语应用我的 function1 并将输出(我想为 df$PT 中的每个术语的单个日期或 NA)存储在 df$new 中时,问题就来了-col,例如:

df$new_col <- sapply(df$PT,function1,date=df$date)

但是 df$new_col 中的预期输出并没有以日期格式显示为:

日期2a 日期2b 日期2c 日期2d ...

我只获得第一个在各处重复的输出,并且是日期的字符串格式: 18705 18705 18705 18705 ...

这是怎么回事,我该如何解决才能正确计算 df$new_col 中的 date2?

感谢您的帮助!

因为 R 是矢量化的,所以您可以直接从现有列创建新的 df 列。例如:

cars <- mtcars
cars$new <- ifelse(cars$cyl == 6 & cars$mpg > 20, "NewVal", NA)
head(cars)
                   mpg cyl disp  hp drat    wt  qsec vs am gear carb    new
Mazda RX4         21.0   6  160 110 3.90 2.620 16.46  0  1    4    4 NewVal
Mazda RX4 Wag     21.0   6  160 110 3.90 2.875 17.02  0  1    4    4 NewVal
Datsun 710        22.8   4  108  93 3.85 2.320 18.61  1  1    4    1   <NA>
Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44  1  0    3    1 NewVal
Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2   <NA>
Valiant           18.1   6  225 105 2.76 3.460 20.22  1  0    3    1   <NA>