在R中打印函数的字符串和参数

在R中打印函数的字符串和参数,r,R,关于R,我有两个问题。问题很简单,但不幸的是,我在网上找不到任何东西 有没有可能用R写一个函数,fun1我不知道你在问题的第一部分想实现什么。你能进一步解释一下吗 对于第二部分,类似这样的内容如何: > ages = c(40, 23, 13, 42, 53) > sapply(ages, function(x) paste("Hello, my age is", x)) [1] "Hello, my age is 40" "Hello, my age is 23" "Hello,

关于R,我有两个问题。问题很简单,但不幸的是,我在网上找不到任何东西


  • 有没有可能用R写一个函数,
    fun1我不知道你在问题的第一部分想实现什么。你能进一步解释一下吗

    对于第二部分,类似这样的内容如何:

    > ages = c(40, 23, 13, 42, 53)
    > sapply(ages, function(x) paste("Hello, my age is", x))
    [1] "Hello, my age is 40" "Hello, my age is 23" "Hello, my age is 13" "Hello, my age is 42"
    [5] "Hello, my age is 53"
    
  • 第一部分可以使用
    sprintf
    paste0

    fun1 <- function(place) read.table(sprintf('/home/%s.csv', place), 
                                       header=TRUE, sep=",")
    
    fun2 <- function(place) read.table(paste0('/home/', place, '.csv'), 
                                       header=TRUE, sep=",") 
    # paste0 only works in recent versions of R
    
    fun3 <- function(place) read.table(paste('/home/', place, '.csv', sep=''),
                                       header=TRUE, sep=",")
    
    # Now call the functions
    fun1('test.csv')
    fun2('test.csv')
    fun3('test.csv')
    

  • 请参见“粘贴”
    “cat”
    “消息”
    我想使用函数的原因如下:我必须对很多文件(all.csv)进行一些计算/操作。首先,我选择了
    file.choose()
    。我使用Emacs,但每次我都必须这样写:/home/dir1/dir2/filename.csv。所以我的想法是使用一个函数,其中参数是文件名。让我们假设我必须对200个文件进行计算,我想函数方法更有效,不是吗?@Erik Shilts:谢谢你的回答。然而,第一部分对我不起作用。假设我的文件位于
    /home/dir1/dir2/
    中。此外,假设有一个名为test.csv的文件(完整路径为:/home/dir1/dir2/test.csv)。如果我写
    fun1checkout
    ?sprintf
    以获取该函数的帮助。它的作用是允许您指定字符串中的持有者位置。试着运行类似于sprintf(“Place1[%s]、Place2[%s]、Place3[%s]”、“thing1”、“thing2”、“thing3”)的程序来查看它的工作原理。您的错误表示R正在查找名为test.csv的对象。相反,您应该将字符串“test.csv”传递给函数。@Erik Shilts:如果我的评论不清楚或者我误解了您的评论,那么很抱歉。我所做的:我编写了一个R脚本,其中包含上述fun1函数。我用
    源代码(R脚本的名称)
    加载了它。然后我尝试了fun1(test),得到了前面评论中提到的错误。我还尝试了fun1(test.csv),得到了相同的结果。您需要用引号调用test.csv周围的函数:
    fun1(“test.csv”)
    @Mea culpa!对不起,现在一切都好了!为什么我必须将函数参数放入“”?否则R认为place代表一个赋值的变量?或者是什么导致了这个问题?
    fun1 <- function(place) read.table(sprintf('/home/%s.csv', place), 
                                       header=TRUE, sep=",")
    
    fun2 <- function(place) read.table(paste0('/home/', place, '.csv'), 
                                       header=TRUE, sep=",") 
    # paste0 only works in recent versions of R
    
    fun3 <- function(place) read.table(paste('/home/', place, '.csv', sep=''),
                                       header=TRUE, sep=",")
    
    # Now call the functions
    fun1('test.csv')
    fun2('test.csv')
    fun3('test.csv')
    
    ages <- 10:20
    paste('Hello my name is', ages)