Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 重用函数不起作用_R - Fatal编程技术网

R 重用函数不起作用

R 重用函数不起作用,r,R,功能: myFunc=function(from) { ss=unlist(strsplit(from,":")) as.numeric(ss[1])*24*60+as.numeric(ss[2])*60+as.numeric(ss[3]) } 在这种情况下效果非常好: myFunc("61:35:00") myFunc("61:36:00") 但在我需要的用例中,只有1次有效(在csv文件的第一个字符串上): setClass('myTime')

功能:

myFunc=function(from) {
           ss=unlist(strsplit(from,":"))
           as.numeric(ss[1])*24*60+as.numeric(ss[2])*60+as.numeric(ss[3])
}
在这种情况下效果非常好:

myFunc("61:35:00")
myFunc("61:36:00")
但在我需要的用例中,只有1次有效(在csv文件的第一个字符串上):

setClass('myTime')
setAs("character","myTime", myFunc(from) )
art=read.csv2("file.csv", colClasses=c('myTime') )

您的函数不是矢量化的,只是基于向量
ss
中的前3个值返回一个值

您可以将您的
myFunc()
应用于多个值:

x <- c("61:35:00", "61:36:00")

sapply(x,myFunc)
#61:35:00 61:36:00 
#   89940    90000 
…或使用
Vectorize
,在这种情况下可能不太谨慎:

Vectorize(myFunc)(x)
#61:35:00 61:36:00 
#   89940    90000 
Vectorize(myFunc)(x)
#61:35:00 61:36:00 
#   89940    90000