R 应用函数在2个数据帧中获取匹配列,在列上循环
我有以下两个数据帧R 应用函数在2个数据帧中获取匹配列,在列上循环,r,function,apply,t-test,R,Function,Apply,T Test,我有以下两个数据帧 df1 <- as.data.frame(matrix(runif(50), nrow = 10, byrow = TRUE)) colnames(df1) <- c("x1", "x2", "x3", "x4", "x5") df2 <- as.data.frame(matrix(runif(100), nrow = 20, byrow = TRUE)) c
df1 <- as.data.frame(matrix(runif(50), nrow = 10, byrow = TRUE))
colnames(df1) <- c("x1", "x2", "x3", "x4", "x5")
df2 <- as.data.frame(matrix(runif(100), nrow = 20, byrow = TRUE))
colnames(df2) <- c("x1", "x2", "x3", "x4", "x5")
apply()似乎只接受一个df作为输入?在j上循环上述两条线的最佳方式是什么
提前谢谢 您可以在R中使用常规的
for
循环,通过在列名上循环来实现这一点
cols[1]“t-统计量:-0.3435717107623”
#>[1]“p值:0.7361266387073”
#>测试柱x3
#>[1]“t-统计量:0.248037735890824”
#>[1]“p值:0.807107717907307”
#>测试列x4
#>[1]“t-统计:0.992363174130968”
#>[1]“p值:0.333989277352541”
#>测试柱x5
#>[1]“t-统计:2.06600413500528”
#>[1]“p值:0.05276522524211”
于2020-11-02由(v0.3.0)
apply
、lappy
、vapply
和sapply
所有循环在单个对象上创建。如果您有m
多个,则需要mapply
或Map
:
mapply(function(x,y) t.test(x,y)[c("statistic","p.value")], df1, df2)
# x1 x2 x3 x4 x5
#statistic 0.6816886 -1.408304 -0.2598513 -0.890468 -1.097354
#p.value 0.5028386 0.1721202 0.7982655 0.3825847 0.2851621
这假设
df1
和df2
的列顺序相同。那是什么语言?matlab?R.添加了一个标签来反映这一点。谢谢
mapply(function(x,y) t.test(x,y)[c("statistic","p.value")], df1, df2)
# x1 x2 x3 x4 x5
#statistic 0.6816886 -1.408304 -0.2598513 -0.890468 -1.097354
#p.value 0.5028386 0.1721202 0.7982655 0.3825847 0.2851621