read.table,变量和数字在同一列

  • 本文关键字:一列 table 变量 数字 read r
  • 更新时间 :
  • 英文 :


是否可以使用read.table读取变量和数字出现在同一列中的数据集?下面是一个不起作用的例子,后面是起作用的matrix

aa <- 10
bb <- 20
my.data1 <- read.table(text = '
    aa   0
    0    bb
', header = FALSE, stringsAsFactors = FALSE)
my.data1
# matrix returns desired output
my.data2 <- matrix(c(  aa,   0,
                        0,  bb  ), nrow = 2, ncol = 2, byrow = TRUE)    
my.data2
#     [,1] [,2]
# [1,]   10    0
# [2,]    0   20

我的猜测是textaabb转换为文本,但在仍然使用read.table的情况下可以避免这种情况吗?

str(my.data1)
'data.frame':   2 obs. of  2 variables:
 $ V1: chr  "aa" "0"
 $ V2: chr  "0" "bb"

read.table函数的text参数不会将输入转换为字符串,而是(单)引号创建字符串文字或字符串常量,正如引号的R文档所解释的那样(在R中执行?Quotes):

单引号和双引号分隔字符常量。它们可以互换使用,但首选双引号(字符常量使用双引号打印),因此单引号通常仅用于分隔包含双引号的字符常量。

matrix命令中的aabb是R中的符号,因为它们没有被引用,解释器将在全局环境中找到它们的值。

因此,要回答您的问题:不,除非您使用类似sprintf的函数来替换字符串中aabb的值,否则不可能执行此操作。例如:

my.data1 <- read.table(text = sprintf('
    %f   0
    0    %f', aa, bb), header = FALSE, stringsAsFactors = FALSE)

但这不是一件很常见的事情!

最新更新