R 使用带有附加参数的函数将结果存储在df中
我试图编写一个函数,返回一个数据帧,该数据帧由用户作为参数提供的列组成(确切地说,用户提供他想要返回的列索引)。当我传递一个附加参数(因此是一列)时,我的函数工作正常,但当我添加另一个参数(例如,额外的3列索引)时,它会抛出一个错误。问题在哪里 我的示例基于R中可用的R 使用带有附加参数的函数将结果存储在df中,r,R,我试图编写一个函数,返回一个数据帧,该数据帧由用户作为参数提供的列组成(确切地说,用户提供他想要返回的列索引)。当我传递一个附加参数(因此是一列)时,我的函数工作正常,但当我添加另一个参数(例如,额外的3列索引)时,它会抛出一个错误。问题在哪里 我的示例基于R中可用的地震数据集: myFunc <- function(data, ...){ df <- data.frame() for (i in list(...)) { col <- data[i]
地震
数据集:
myFunc <- function(data, ...){
df <- data.frame()
for (i in list(...)) {
col <- data[i]
df <- rbind(df,col)
}
return(df)
}
但在这里它抛出了一个错误:
myFunc(quakes, 1,2,3)
错误是:“match.names(clab,names(xi))”:
名称与以前的名称不匹配
调用自:match.names(clab,names(xi))
我也尝试过使用
cbind
,但它也不起作用。cbind
仅在数据帧的行数相同时才起作用。您使用的初始数据帧有零行,无法将其绑定到非零行列。
尝试:
myFunc错误消息是什么?您的输入数据集是什么?如果你提供了一个最小的可重复的例子,你就有最大的机会得到一个有用的答案。可能会有帮助。我的示例是可复制的,我使用的是R环境中可用的地震
数据集。我在我的帖子中添加了错误谢谢!就在您发布答案之前,我也得出了结论,我必须使用一些数据初始化df,然后使用cbind
,谢谢您的帮助!
myFunc(quakes, 1,2,3)
myFunc <- function(data, ...){
initdone <- F
for (i in list(...)) {
col <- data[i]
if (!initdone) {
df <- col
initdone <- T
} else {
df <- cbind(df,col)
}
}
return(df)
}
myFunc(quakes, 1,2,3)
lat long depth
1 -20.42 181.62 562
2 -20.62 181.03 650
3 -26.00 184.10 42
4 -17.97 181.66 626
5 -20.42 181.96 649