全文链接:http://tecdat.cn/?p=30904
PROBLEM 1) Comparing Vectors
Description: Given two vectors, the longer will be deteremined and returned. In the event of a tie, the vector called x will be returned
longVec<-function(x,y)
{lv=ifelse(length(x)>length(y),x,y)
return(lv)
}
PROBLEM 2) Intersection Subsets
Script Name: vowelMax
Input: Two numeric vectors
Output: One numeric vector consisting of only even numbers
Error Checking:
1) If either input is empty, return NULL
2) If either vector is not numeric return NULL
3) If the vectors have an empty intersection (length of intersection
is 0), return NULL
4) If there are no even numbers in the intersection return NULL>
Description: Given two vectors, find their intersection (numbers common to both)
and remove all of the odd numbers and return the even numbers
Hints:
Run the command: help(intersect)
For a number x, (x%%2) is zero if x is even and one if x is odd.
Look into indexing a vector with logical values
commonEven<-function(x,y)
{if(is.null(x) || is.null(y)) return(NULL)
else{
if(!is.numeric(x) || !is.numeric(y)) return(NULL)
else{if(length(intersect(x,y))==0) return(NULL)
else{if(min(x%%2)==1 || min(y%%2)==1) return(NULL)
PROBLEM 3) Longest first difference
Script Name: maxDiff
Input: x: a numeric vector
seqName: a string containing the name of the vector
Output: A nonzero number equal to the maximum absolute difference
of the sequence
Error Checking:
1) If the input is empty, return NULL
2) If the vector is not numeric, return NULL
Messages: Best described by examples. See below:
"|(a[9]-a[8])| = 7 is the maximum absolute difference"
"Input vector must be numeric."
"Sequence is empty"
Hint:
Run the command: help(intersect)
For a number x, (x%%2) is zero if x is even and one if x is odd.
Look into indexing a vector with logical values
Description: Given a sequence, {a[j]}, define the maximum absolute difference as
maximum absolute difference of {a} = max |(a[j+1]-a[j])| j=1,2,3,...,n-1
----------------------------
Example:
Good Case:
> e<-c(5,7,10,8,4,0,2,-3,-10)
> e
[1] 5 7 10 8 4 0 2 -3 -10
> maxDiff(e,"a")
[1] "|(a[9]-a[8])| = 7 is the maximum absolute difference"
[1] 7
Error case: Nonnumeric vector
> maxDiff(c("cat","dog"),"pets")
[1] "Input vector must be numeric."
NULL
Error case: Empty vector
> x<-c(2341)
> x<-x[-1]
> maxDiff(x,"a")
[1] "Sequence is empty"
NULL
End Example-------------------------------
maxDiff<-function(x,seqName)
{if(is.numeric(x)==FALSE)cat("Input vector must be numeric.")
else{
if(x[-1]==0)cat("Sequence is empty")
else{
Difmax=0;
for(i in 1:(length(x)-1)){
for(j in (i+1):length(x)){
}
}
}
PROBLEM 4) Counting vowels in a list a words
Script Name: vowelMax
Input: A vector of words (character strings)
Output: The word with the most vowels
Error Checking: If the vector of words is empty, a message is written saying
"Vector of words is empty" and returning NULL
Description: Given a vector of word (character strings), this function finds and
returns the word with the most vowels.
vowelMax<-function(a)
{if(length(a)==0)cat("Vector of words is empty")
vowmax=0
for(i in 1:length(a)){
vowc=0;
for(j in 1:nchar(a[i]))
{
cat