ฉันมีชื่อไฟล์ที่มีหลายคอลัมน์ สำหรับแต่ละแถวใน dataframe ฉันต้องการเรียกใช้ฟังก์ชันบนแถวและอินพุตของฟังก์ชันใช้หลายคอลัมน์จากแถวนั้น ตัวอย่างเช่นสมมติว่าฉันมีข้อมูลนี้และ testFunc ซึ่งยอมรับสอง args:
> df <- data.frame(x=c(1,2), y=c(3,4), z=c(5,6))
> df
x y z
1 1 3 5
2 2 4 6
> testFunc <- function(a, b) a + b
สมมติว่าฉันต้องการใช้ testFunc นี้กับคอลัมน์ x และ z ดังนั้นสำหรับแถวที่ 1 ฉันต้องการ 1 + 5 และสำหรับแถวที่ 2 ฉันต้องการ 2 + 6 มีวิธีทำเช่นนี้โดยไม่เขียนลูปสำหรับบางทีอาจจะมีครอบครัวใช้ฟังก์ชั่น?
ฉันลองสิ่งนี้:
> df[,c('x','z')]
x z
1 1 5
2 2 6
> lapply(df[,c('x','z')], testFunc)
Error in a + b : 'b' is missing
แต่มีข้อผิดพลาดความคิดใด ๆ
แก้ไข:ฟังก์ชั่นจริงที่ฉันต้องการโทรไม่ใช่ผลรวมที่ง่าย แต่เป็น power.t.test ฉันใช้เครื่องหมาย + b เพื่อเป็นตัวอย่างเท่านั้น เป้าหมายสุดท้ายคือสามารถทำสิ่งนี้ (เขียนใน pseudocode):
df = data.frame(
delta=c(delta_values),
power=c(power_values),
sig.level=c(sig.level_values)
)
lapply(df, power.t.test(delta_from_each_row_of_df,
power_from_each_row_of_df,
sig.level_from_each_row_of_df
))
โดยที่ผลลัพธ์เป็นเวกเตอร์ของเอาต์พุตสำหรับ power.t.test สำหรับแต่ละแถวของ df
dplyr
วิธี